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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2013, 13:13   #1
WarAngel-alk
 
Регистрация: 30.01.2013
Сообщений: 8
По умолчанию Передача операнда внутри переопределенной операции

Здравствуйте. Пытаюсь разобраться с перегрузкой операций для классов, и вот в чем проблема:
Есть класс longNumber, в котором хранится(внезапно) длинное число в виде массива цифр а также знак числа. Переопределил для класса операцию "+". Теперь учу её работать с отрицательными числами. Например если первое число положительное, а второе - отрицательное, то значения нужно уже вычитать. Собственно, вопрос: как внутри функции-члена передать другой функции объект, для которого данная функция вызывалась. Попробую на примере объяснить:

main.cpp:
Код:
longNumber a(str1, true); //Положительное число
longNumber b(str2, false); //Отрицательное
longNumber c = a + b;
longNumber.cpp:
Код:
longNumber longNumber::operator+(longNumber b)
{
	if(this->sign == true && b.sign == false) 
                return a - b; // a - объект, для которого 
                             //вызывается функция. 
		             //Как его передать в другую функцию?
}
Как вариант - создать копию текущего объекта и работать с ней. Но, по-моему, костыль...

UPD. Ой, кажется, мало гуглил

Последний раз редактировалось WarAngel-alk; 03.05.2013 в 13:19.
WarAngel-alk вне форума Ответить с цитированием
Старый 03.05.2013, 15:03   #2
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

this и есть указатель на объект, для которого вызывается... только зачем?
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 03.05.2013, 18:02   #3
WarAngel-alk
 
Регистрация: 30.01.2013
Сообщений: 8
По умолчанию

Но выражение "return this - b" не прокатит же? Или нужно было "return *this - b"?

В любом случае я уже научился переопределять операции с двумя аргументами, так что проблема решена
WarAngel-alk вне форума Ответить с цитированием
Старый 03.05.2013, 18:06   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Но выражение "return this - b" не прокатит же? Или нужно было "return *this - b"?
Или.
Ну, или можно так:
Код:
return this->operator-(b);
Способ извращённый, но работает.
Abstraction вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Error 2070 : неверное представление операнда Rin Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 01.12.2011 16:14
Оператор не относится к этому типу операнда ZvEr_HaCkEr Общие вопросы Delphi 3 05.08.2011 09:49
Оператор, не применимый к этому типу операнда. masandii Помощь студентам 3 26.12.2010 03:06
Определение размера операнда и адреса Sergey.Voloxov Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 06.03.2010 22:58
собрать команду из кода операции и операнда Olejik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 15 07.06.2009 01:46