LINUX.ORG.RU

перегрузка операций присваивания / индексации


0

0

допустим есть некоторый класс matrix в котором есть
матрица _matrix(для теста делаем ее паблик),
в паблике также есть типа данных TAdres:
struct TAdres{ 
	Tint i; 
	Tint j; 
};
перегружена опрация взятия адреса:
matrix::Tel matrix::operator[](TAdres index)
{
	return _matrix[index.i][index.j];
}

в коде пишу 
matrix a;
matrix::TAres adr;
adr.i=0;
adr.j=0;
a[ard] = 10; //тут выдает ошибку мол операция = не определена

вопрос, как перегрузить операцию присваивания для данного случая?
в примерах только нашол перегрузку для присваивания всей матрице, но
не ее элементу.

нашол касяк, нужно было проста нужна определять перегрузку как <тип> &operator<оператор>(<список параметров>)....

popinguy
() автор топика

Надо делать так:
inline matrix:Tel& matrix::operator[](const TAdres &index)
{
    return _matrix[index.i][index.j];
}

inline const matrix::Tel& matrix::operator[](const TAdres &index) const
{
    return _matrix[index.i][index.j];
}

А ещё бы неплохо словарь по английскому полистать :) Но это уже дело вкуса.

Legioner ★★★★★
()

И еще структура TAdres лишняя, есть std::pair<Tint, Tint>.

Begemoth ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.