Я использую оператор() в качестве оператора индекса так:Оператор() в качестве индекса (C++)
double CVector::operator() (int i) const
{
if (i >= 0 && i < this->size)
return this->data[i];
else
return 0;
}
double& CVector::operator() (int i)
{
return (this->data[i]);
}
Это работает, когда я получаю значение, но я получаю сообщение об ошибке, когда я пытаюсь написать назначить значение, используя
a(i) = 1;
UPD: текст ошибки:
необработанное исключение при 0x651cf54a (msvcr100d.dll) в CG.exe: 0xC0000005: Доступ к считыванию нарушений доступа 0xccccccc0.
Какая ошибка у вас? Также: ваше поведение несовместимо. Вы тихо выходите из-за пределов диапазона для считывания и seg-ошибки на значения вне диапазона для записи. –
Если вы пишете класс типа массива, вы, вероятно, решили сделать все управление памятью самостоятельно? Это означает, что вам необходимо определить четыре метода, которые автоматически определит компилятор. Если вы забыли, тогда вы собираетесь создавать недопустимые ячейки памяти. Отправьте конструкторы/деструкторы и оператор присваивания. –