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

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

Войти
Регистрация
Восстановить пароль
 
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
#1

постфиксная перегрузка поная запись - C++

17.03.2013, 10:05. Просмотров 346. Ответов 2
Метки нет (Все метки)

Здарова!

создал класс Int2 как бы моделирующий int в нем решил перегрузить все операторы которые токо есть с вызовом в короткой форме и в полной.

оператор постфиксный ++ перегрузил так
C++
1
2
3
4
Int2 operator++(int)
{
  return val++; //это открытый член-значение класса.
}
делаю вызов
с=с+ a++; все нормально работает с постинкрементом. все как положено.
записываю в полной записи:
c.operator=(operator+(c, a.operator++(0) ));//owibka
говорит ошибка в функции operator+ определение данной функции, функция глобальная не классовая
C++
1
2
3
4
Int2 operator+(Int2& a, Int2& b)
{
  return a.val+b.val;
}
а ошибка в том, что второй аргумент должен быть ссылкой, а функция a.operator++(int) возвращает не ссылку, а копию а, ведь постинкремент.
Тогда спрашивается почему же короткая записть c=c+a++; работает,
а как бы полная c.operator=(operator+(c, a.operator++(0) )); нет
Видимо либо запись неправильная, либо c=c+a++ как то обманывает функцию Int2 operator+(Int2&, Int2&), функция считает, что попала ссылка, а ей новый объект подсунули.

Просветите новичка!

п.с. тупой наверно вопрос
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.03.2013, 10:05     постфиксная перегрузка поная запись
Посмотрите здесь:

Префиксная и постфиксная запись инкремента - C++
#include <iostream> using namespace std; int main() { setlocale(LC_ALL, "rus"); int х = 1; int a = 0;

Не могу разобраться в чём ошибка(инфиксная и постфиксная запись выражения) - C++
на вход для простоты подаю коротенько выражение меньше 10 символов цифры во входе тоже от 0 до 10 при выводе строки otvet ничег оне...

Матрицы, перегрузка, запись в файл - C++
вообщем есть 2 матрицы их нужно сложить и перемножить и записать результаты в файл , у меня вместо результатов выдает какие-то числа в 16...

Перегрузка оператора запись в поток - C++
Здравствуйте! Подскажите, пожалуйста, возможно ли так реализовать: #include <fstream> class ClassA { public: bool...

Перегрузка оператора запись в поток множества данных - C++
Здравствуйте! Я использую такой код: template<typename T> void operator >> (const T& str) { m_fout << str << std::endl; } ...

Перегрузка операторов. Запись и чтение из файла обьект класса - C++
Надо для обьектов некого класса перегрузить операторы << и >> для чтения и записи соответственно. Ну, вообшем я незнаю как записать чтото в...

Постфиксная и префиксная форма инкремента и декремента. - C++
Само задание: Написать программу с примерами постфиксной и префиксной формами инкремента и декремента. Число вводится с клавиатуры. ...

Операции инкремента и декремента (префиксная и постфиксная версия). Подскажите. - C++
#include <iostream> #include <string> using namespace std; int main () { setlocale(LC_ALL,...

C++ Перегрузка - C++
Добрый вечер,очень прошу мне помочь,уже 2 часа читаю методичку и всё без результатов,нужно перегрузить функцию min_el поиска минимального...

Перегрузка new - C++
Дайте примеры на перегрузку. #define n ... // Некая целая константа class a { ... }; // Некий класс a *p=new a; // Здесь должен быть...

перегрузка - C++
всем привет) мне нужна помощь)я пытаюсь научиться программировать на с++. вот первая проблема которая возникла у меня. написал программу...

Перегрузка << и >> - C++
ачал изучать перегрузку ф-ций. Вот код: #include &lt;iostream.h&gt; class PhoneNumber { friend ostream &amp;operator&lt;&lt;(ostream &amp;, const...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кот Ангенс
317 / 267 / 38
Регистрация: 24.05.2012
Сообщений: 629
17.03.2013, 10:08     постфиксная перегрузка поная запись #2
Цитата Сообщение от ninja2 Посмотреть сообщение
c.operator=(operator+(c, a.operator++(0) ));
Может быть, c.operator=(c.operator+(a.operator++(0)));?
ninja2
230 / 186 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
17.03.2013, 10:34  [ТС]     постфиксная перегрузка поная запись #3
Цитата Сообщение от Кот Ангенс Посмотреть сообщение
Может быть, c.operator=(c.operator+(a.operator++(0)));?
да тупанул просто как всегда записал так c.operator=(c.operator+(a.operator++(0)));
а нужно было b.operator=(operator+(c, a.operator++(0)));

короче вроде тупо описался все работает .

( и сообщение об ошибке прочитал не внимательно)
Ответ Создать тему
Опции темы

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