Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
patriot2008
 Аватар для patriot2008
70 / 70 / 4
Регистрация: 04.12.2008
Сообщений: 463
#1

Перегрузка операции [][] для класса Матрица - C++

26.12.2010, 16:03. Просмотров 875. Ответов 4
Метки нет (Все метки)

Добрый день.

Возможно, кто нить знает, как правильно перегрузить операцию [][] для класса Матрица.
Класс описан так
C++
1
2
3
4
5
6
7
8
9
class matrix
{
private:
    float **matr;   //матрица
    int n;
public:
    float& operator[] (int i, int j) {return matr[i][j]}    //доступ к заданному элементу матрицы
 
};
Но компилятор на такой код выдает ошибки.
в чем может быть проблема?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2010, 16:03     Перегрузка операции [][] для класса Матрица
Посмотрите здесь:

Перегрузка операторов для класса матриц C++
Перегрузка << , >> для шаблонного класса C++
Перегрузка операторов для класса МАССИВ C++
C++ Перегрузка операторов для класса
Перегрузка операции < для класса вектор C++
перегрузка == для класса string C++
Перегрузка операции + для сложения элементов динамического массива C++
Перегрузка оператора ( ) для объектов класса C++
Перегрузка операторов для класса "Матрица" C++
Перегрузка операторов для класса polynom C++
C++ Добавить в определение класса Матрица перегрузку операции сложения скаляра с матрицей
Перегрузка оператора + для класса Date C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1921 / 1530 / 139
Регистрация: 31.05.2009
Сообщений: 2,892
26.12.2010, 18:02     Перегрузка операции [][] для класса Матрица #2
C++
1
2
float* operator[](int i) { return matr[i]; } 
const float* operator[](int i) const { return matr[i]; }
patriot2008
 Аватар для patriot2008
70 / 70 / 4
Регистрация: 04.12.2008
Сообщений: 463
26.12.2010, 21:55  [ТС]     Перегрузка операции [][] для класса Матрица #3
спасибо за совет, но обращение по индексу не работает, выводит только первую строку.
C++
1
2
3
4
matrix *mat = new matrix(n);
for (int i=0; i<n; i++)
    for (int j=0; j<n; j++)
        cout << *(mat[i][j]) << "   ";
как быть?
rangerx
1921 / 1530 / 139
Регистрация: 31.05.2009
Сообщений: 2,892
26.12.2010, 22:08     Перегрузка операции [][] для класса Матрица #4
C++
1
(*mat)[i][j]
patriot2008
 Аватар для patriot2008
70 / 70 / 4
Регистрация: 04.12.2008
Сообщений: 463
26.12.2010, 22:19  [ТС]     Перегрузка операции [][] для класса Матрица #5
Спасибо, очень выручили. Все работает.
Yandex
Объявления
26.12.2010, 22:19     Перегрузка операции [][] для класса Матрица
Ответ Создать тему
Опции темы

Текущее время: 21:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru