Re[3]: Оператор [] и const методы
От: e-garin Россия  
Дата: 05.04.07 05:42
Оценка:
Здравствуйте, Nexie, Вы писали:

NBN>>В приведенной конструкции все нормально, видимо ты не все привел.


N>Нашел тот кусок кода, который не компилился.

N>Вот как оно выглядело на самом деле:

N>
N>class SampleClass
N>{
N> private:
N>  double *m_Data;
N> public:
N>  double& operator[](const int index) { return m_Data[index]; }
N>};

N>void f(const SampleClass& x)
N>{
N> SampleClass y;
N> int i,j; double a;
N>  y[j] = y[j] + x[i]*a; // вот тут ОНО хочет оператор "+"
N>  //              ^
N>  // E2094 'operator+' not implemented in type 'SampleClass' for arguments of type 'int'
N>}
N>


Comeau говорит (и правильно, на мой взгляд) об использовании неинициализированных переменных i и j (но это предупреждение) и о том, что operator[] для const SampleClass не определен (а это ошибка).

Вот такой код компилируется без ошибок:

class SampleClass
{
 private:
  double *m_Data;
 public:
  double operator[] (const int index) const{ return m_Data[index]; }
  double& operator[] (const int index) { return m_Data[index]; }
};

void f(const SampleClass& x)
{
 SampleClass y;
 int i=0,j=0; double a;
 y[j] = y[j] + x[i]*a; // и вот тут ОНО (comeau) не хочет оператор "+"
}

Почему Ваш компилятор ругается на operator+()?. Да кто ж его знает...
А мне нравится жить :).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.