Как использовать указатель на функцию в перегруженном операторе

0

Я пытался найти способ Matlab для создания элементов матрицы. Например, если в MatLab есть следующее:

>> A = [1 2; 3 4]

 A =

 1     2
 3     4

>> A(1,1) = 5

Будет генерировать этот результат:

A =

 5     2
 3     4

Можно ли это сделать с помощью оператора() в c++? Заранее спасибо.

@редактировать

Извините, ребята, я думаю, что решение будет достигнуто указателем на функцию.

Я стараюсь быть более понятным. У меня есть матрица классов, я хочу изменить соответствующее значение класса с помощью оператора(), передав число, соответствующее строке и столбцу.

  • 2
    Какое это имеет отношение к указателям на функции?
  • 0
    Не перегружая что-либо, вы можете просто сделать A[1][1] = 5 . Или вы можете использовать один из многих существующих классов Matrix (или написать свой собственный) и определить оператор () .
Показать ещё 3 комментария
Теги:
arrays
matrix

1 ответ

2
Лучший ответ
template<size_t I, size_t J>
class M
{
    public:
    M(double e00, ...)
    {
        // use arg_list :)
    }
    double& operator () (int i, int j)
    {
        return m[i-1][j-1];
    }
    private:
    double m[I][J];
};

M<2,2> A(1,2,3,4);
A(1,1)=5.0;
  • 0
    Спасибо за ответ, я попробовал ваш sujecstion, но я не могу скомпилировать код, я получаю следующую ошибку: «Требуется lvalue в качестве левого операнда назначения» @edit Я решил проблему, это было правильно, спасибо :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню