C++ Вызов перегруженных операторов внутри класса?

интернет компьютеры программирование с++ перегрузка

class matrix
{
public:
//Указатель на массив
double *array;
//Конструктор класса
matrix(int i,int j)
{
//Выделим память по матрицу i*j
array = new double[i*j];
}
//Перегруженный опрератор для доступа к элементам массива - доступ оп ссылке
double &operator() (int i, int j)
{
return *(array+i*j+i);
}

};

class thDiagMatrix : public matrix
{
thDiagMatrix(int i, int j) : matrix(i, j) { }

void addValueSet(double a,double c, double b,int i)
{
if(i<1) cout << "i must be >=1 for thDiagMatrix";
int c_ind=i-1, a_ind=i-2;

if ( a_ind>=0) this(i,i-2)=a ;
}
}

Выдает ошибку
error: `this' cannot be used as a function|

Как обратиться к оператору () ?

Примечание:
Не работает именно if ( a_ind>=0) this(i,i-2)=a внутри класса, из любого другого места нормально вызывается
Ответы:
попробуй переопредилить operator[]
Ну потому что ты вручную визиваеш конструктор. Что конкретно должна делать функция
Используйте явную форму вызова оператора:
if ( a_ind>=0)  this->operator()(i,i-2) = a;


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.