Я вывожу вектор класса stl vector и пытаюсь перегрузить операторы [], чтобы обеспечить проверку диапазона доступа к элементу с индексом. Но я получаю ошибки компиляции при попытке создать объект const моего производного класса Vec
.не удалось создать объект const класса, полученный из std :: vector
В приведенном ниже примере это код:
template<class T>
class Vec : public vector<T>
{
public:
Vec(): vector<T>()
{
}
Vec(int i):vector<T>(i)
{
}
T& operator[](int i)
{
return at(i);
}
const T& operator[](int i) const
{
if(i>=size())
cout<<"error"<<endl;
return at(i);
}
};
void main()
{
Vec<int> v1(10); //works fine
const Vec<int> v(10); //error
}
Почему код Const вектор v (10); работает, но const Vec v1 (10); не работает. Есть ли что-то, что мне не хватает? Почему я не могу создать объект const?
Сделайте нам одолжение и разместите свой * настоящий * код. Ошибка, которую вы описываете, если она находится в этой публикации, затмевается многочисленными другими ошибками. – WhozCraig
Я, к сожалению, не могу воспроизвести вашу проблему с g ++ 4.5 (после устранения таких проблем, как 'void main', missing includes, а также не квалифицирующих независимых имен с' this-> '). Можете ли вы предложить дополнительные разъяснения, чтобы помочь нам? –
@MarkB так же это. – WhozCraig