Отсутствует явный тип, требуется int C++
Всем привет, недавно я начал изучать C++ по книге Липмана "C++ для начинающих". На данном этапе, автор программирует свой массив, который является расширенной версией стандартного массива в C++.
Итак, в чём же состоит проблема. У нас есть класс IntArrayRC
, который наследуется от класса IntArray
. При определении функции virtual int& operator[] (int) const
проблем не возникает, однако при написании его реализации, появляется ошибка Отсутствует явный тип, требуется int C++. Я попробовал поставить тип функции int
, как и указано при определении, однако появилась новая ошибка: объявление несовместимо с "int &IntArrayRC::operator const".
IntArray.h
:
class IntArray
{
public:
explicit IntArray(int sz = DefaultArraySize);
IntArray(int* array, int array_size);
IntArray(const IntArray& rhs);
const int size() { return _size; }
bool operator == (const IntArray&) const;
bool operator != (const IntArray&) const;
IntArray& operator = (const IntArray&);
int size() const { return _size; };
virtual int& operator[] (int index) { return ia[index]; }
virtual void sort();
virtual int min() const;
virtual int max() const;
virtual int find(int value) const;
virtual ~IntArray() { delete[] ia; }
protected:
void init(int sz, int* array);
int _size;
int* ia;
static const int DefaultArraySize = 12;
};
IntArrayRC.h
:
#ifndef IntArrayRC_H
#define IntArrayRC_H
#include "IntArray.h"
#include <cassert>
class IntArrayRC : public IntArray
{
public:
IntArrayRC(int sz = DefaultArraySize);
IntArrayRC(const int* array, int array_size);
IntArrayRC(const IntArrayRC& rhs);
virtual int& operator[] (int) const;
private:
void check_range(int ix);
};
#endif
IntArrayRC::operator[](int index)
{
check_range(index);
return ia[index];
};
inline void IntArrayRC::check_range(int index) {
assert(index >= 0 && index < _size);
};
Данный фрагмент вы можете найти на странице 59 - 60, перейдя по ссылке: http://www.insycom.ru/html/metodmat/inf/Lipman.pdf