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

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

Войти
Регистрация
Восстановить пароль
 
mihtar
1 / 1 / 0
Регистрация: 15.10.2010
Сообщений: 8
#1

Перегрузка банарных операторов (ошибка) - C++

06.04.2012, 00:11. Просмотров 469. Ответов 2
Метки нет (Все метки)

Есть класс матрица в ней нужно реализовать перегрузку оператора +. Вот код класса. Компилятор выдаёт ошибку
matrix.cpp:18:43: ошибка: «Matrix& Matrix::operator+(Matrix, Matrix)» должен иметь не более одного аргумента
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Matrix {
  private:
    int szM, szN;
    int **m;
  public:
    Matrix(int M, int N);
    Matrix(const Matrix& c);
    ~Matrix();
    void define();
    void print();
    Matrix& operator+(Matrix& m1, Matrix& m2)
    {
      //Тут будет код =)
    }
};
Укажите пожалуйста в чём ошибка. Компилятор gcc
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2012, 00:11     Перегрузка банарных операторов (ошибка)
Посмотрите здесь:

Перегрузка операторов. Учусь. Ошибка - C++
перегрузка операторов.. ЗАДАНИЕ: М2=М1-V – из М1 удалить строки, сумма элементов которых больше суммы элементов V. где V- массив,...

Ошибка в классе матриц (перегрузка операторов) - C++
уважаемые форумчане, помогите, пожалуйста, найти ошибку в коде пишу класс на матрицы довольно объемный по содержанию, во всяком случае...

Перегрузка операторов 2 - C++
Пишу класс комплексных чисел. И возникла проблема.Я перегрузил операторы +-*/. Но когда использую их в строке типа a=b+c*d - где все...

Перегрузка операторов - C++
Здравствуйте! Пытаюсь понять синтаксис перегрузки операторов: Вот код: // Overload operators using member functions. ...

Перегрузка операторов +=, -=, *= и /= - C++
Есть перегруженные функции + - * / На MSDN есть такая фраза: "Оператор += нельзя перегрузить непосредственно, однако пользовательские...

перегрузка операторов - C++
Всем привет. Дошел до темы перегрузки операторов и возникло два вопроса. Первый: Чем отличается вот этот код String ...

Перегрузка операторов - C++
Приветствую! Необходима помощь. Разработать класс Vec4 как вектор из 4-х float. Определить оператор ~ для перестановки элементов вектора...

Перегрузка операторов - C++
При перегрузке операторов арифметических действий советуют += (и подобные) делать членами класса, а операторы + (и подобные) делать не...

Перегрузка операторов - C++
Приветствую. Вот как выглядит задание: АТД − множество с элементами типа char. Дополнительно пере- грузить следующие операции: > −...

Перегрузка операторов - C++
Привет, у меня есть код, но когда я его делал у меня возникла пара вопросов. #include <iostream> #include <iomanip> #include...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
06.04.2012, 00:17     Перегрузка банарных операторов (ошибка) #2
Вы перегружаете оператор в качестве элемент-функции класса. В данном случае параметр должен быть только один, то есть ссылка на объект что будет справа от знака +. И нужно возвращать не ссылку на временный объект ( так делать нельзя ) а сам объект. Причем константный объект, что бы не было кода вроде ( A + B ) = C;
Конечный вид прототипа примерно такой
C++
1
const Matrix operator+( const Matrix &right ) const;
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
06.04.2012, 00:21     Перегрузка банарных операторов (ошибка) #3
Цитата Сообщение от mihtar Посмотреть сообщение
Есть класс матрица в ней нужно реализовать перегрузку оператора +. Вот код класса. Компилятор выдаёт ошибку


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Matrix {
  private:
    int szM, szN;
    int **m;
  public:
    Matrix(int M, int N);
    Matrix(const Maцtrix& c);
    ~Matrix();
    void define();
    void print();
    Matrix& operator+(Matrix& m1, Matrix& m2)
    {
      Matrix temp;
      return temp;
    }
};
Укажите пожалуйста в чём ошибка. Компилятор gcc
Во-первых оператор + лучше перегружать не как член класса, а делать его только френдом.
Во- вторых если вы объявили его как член то у него уже есть один не явный параметр this ( из-за чего у вас и ошибка)
В-третьих оператор должен возвращать объект а не ссылку.

Упс, опоздал.)
Ответ Создать тему
Опции темы

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