Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2018, 21:13   #1
Desolar
Пользователь
 
Регистрация: 30.03.2018
Сообщений: 19
По умолчанию Перегрузка конкретных операторов

Здравствуйте! Пробую разобраться с перегрузкой операторов, с унарными проблем нет, а с бинарными ничего не получается. В интернете есть разные примеры, но они слишком разные и в голове начинает всё путаться.

Буду благодарен, если кто-то покажет и обьяснит если может на конкретном примере как это делать. Основу для примера я написал вырезав всё с своей старой программы:

Код:
#include <iostream>
using namespace std;

class CFlat
{
private:
	int area, choice;
	float gas;
	
public:
	CFlat(int area_, float gas_, int choice_)
	{

		area = area_;
		gas = gas_;
		choice = choice_;
	}
	void set(int area_, float gas_)
	{
		cout << "Enter data" << endl;
		cout << "Area:" << endl;
		cin >> area;
	    cout << "Gas:" << endl;
		cin >> gas;
		cout << endl;

	}
	

   friend istream& operator >> (istream& is, CFlat& dt2) {

		is >> dt2.choice;
		return is;
	}

};

int main()
{
	int choice;
	CFlat CCFlat(0, 0, 0);
	CCFlat.set(0, 0);
	
	while (true)
			{
				cout << "+=area - 1" << endl;
				cout << "area!=gas - 2" << endl;
				cout << "area&&gas - 3" << endl;
				cout << "Exit - 4" << endl;
				cin >> choice; //cin >> CCFlat; ошибка
				cout << endl;

				if (choice == 1)
				{

					cout << "Hey" << endl;
				}



				if (choice == 2)
				{

				}

				if (choice == 3)
				{

				}

				if (choice == 4)
				{
					break;
					cout << endl;
				}
			}	
	system("pause");
	return 0;
}
Пробовал ещё заменить choice в мейне на перегруженный cin, но ничего не вышло.
Desolar вне форума Ответить с цитированием
Старый 06.04.2018, 21:26   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

http://en.cppreference.com/w/cpp/language/operators
p51x вне форума Ответить с цитированием
Старый 06.04.2018, 21:30   #3
Desolar
Пользователь
 
Регистрация: 30.03.2018
Сообщений: 19
По умолчанию

Да-да, я читал разного рода литературу, но почему-то всеровно сложно.
Desolar вне форума Ответить с цитированием
Старый 07.04.2018, 07:00   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

В чем конкретно сложности? Просто добавить еще один параметр и внутри реализовать как функцию двух переменных.
p51x вне форума Ответить с цитированием
Старый 07.04.2018, 15:01   #5
Desolar
Пользователь
 
Регистрация: 30.03.2018
Сообщений: 19
По умолчанию

Хорошо, спасибо, я более-менее разобрался. Но всеровно не могу понять заставить оператор ввода работать, можете посдказать в чём тут ошибка?
Desolar вне форума Ответить с цитированием
Старый 07.04.2018, 15:21   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Так какую ошибку пишет компилятор?
p51x вне форума Ответить с цитированием
Старый 07.04.2018, 15:33   #7
Desolar
Пользователь
 
Регистрация: 30.03.2018
Сообщений: 19
По умолчанию

Сама программа просто вылетает с окном debug error, когда я ввожу число.
Desolar вне форума Ответить с цитированием
Старый 07.04.2018, 16:06   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Что-то вы еще добавили или убрали. Т.к. выложеннsй код вроде как работает:
Изображения
Тип файла: jpg Безымянный.jpg (74.0 Кб, 151 просмотров)
p51x вне форума Ответить с цитированием
Старый 07.04.2018, 17:02   #9
Desolar
Пользователь
 
Регистрация: 30.03.2018
Сообщений: 19
По умолчанию

Потому что я оставлял лишь cin >> CCFlat;
Если оставить cin >> CCFlat; и cin >> choice; одновременно, то тогда же теряется смысл и программа обращается к обычному choice, который обьявлен в мейне.
Desolar вне форума Ответить с цитированием
Старый 07.04.2018, 17:13   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Давайте уже код, что вы наисправляли.
Изображения
Тип файла: jpg Безымянный.jpg (78.9 Кб, 135 просмотров)
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузка операторов yurez_orsha Общие вопросы C/C++ 0 18.05.2014 20:34
Перегрузка операторов C++ applegrub Общие вопросы C/C++ 4 20.12.2011 01:04
Перегрузка операторов stas135642 Общие вопросы C/C++ 0 13.11.2011 23:09
Перегрузка операторов _-Re@l-_ Паскаль, Turbo Pascal, PascalABC.NET 11 20.11.2010 13:23
Перегрузка операторов, Организация перегрузки операторов chagin_yav Помощь студентам 2 12.05.2008 09:15