Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> operator++ и.т.п Продолжение =), Новые темы о старом. 
:(
    Опции темы
kkkggg
Дата 17.6.2006, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 28.4.2006

Репутация: нет
Всего: нет



#include <iostream.h>
class complex 
{
public:
int r,i;
complex (int re,int im) {r = re; i = im;}
complex operator++(const complex&);
};

complex complex::operator++(complex& ARG)
{
    ARG.r = ARG.r + 1;
    ARG.i = ARG.i + 1;
    return *this;
}

int main ()
{
complex a = complex(1,1);
a++;
cout << a.re << "  " << a.im << endl;

return 0;
}


Хотелось бы узнать,  что сдесь не так? 
PM MAIL   Вверх
0x07L
Дата 17.6.2006, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 10.6.2006
Где: Москва

Репутация: нет
Всего: 5



В main имеем

Цитата(kkkggg @  17.6.2006,  20:02 Найти цитируемый пост)
cout << a.re << "  " << a.im << endl;


Между тем в объявлении класса complex

Цитата(kkkggg @  17.6.2006,  20:02 Найти цитируемый пост)
int r,i;


Добавлено @ 20:18 
И еще. Операнд типа complex в метод operator++ передается неявно через this.
operator++, насколько я понимаю, здесь не должен иметь аргументов.

Добавлено @ 20:19 
А еще похоже, что ты забыл const в определении operator++. 
PM MAIL   Вверх
Fedor
Дата 17.6.2006, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


Профиль
Группа: Участник
Сообщений: 2090
Регистрация: 8.2.2003
Где: Великий

Репутация: нет
Всего: 32



Преинкремент
Код

complex complex::operator++()
{
   this->r++;
   return *this;
}


Постинкремент
Код

complex complex::operator++(int)
{
   complex resValue = *this;
   this->r++;
   return resValue;
}
   

Это сообщение отредактировал(а) Fedor - 17.6.2006, 20:41


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
0x07L
Дата 17.6.2006, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 10.6.2006
Где: Москва

Репутация: нет
Всего: 5



2_Fedor

Вот-вот 
PM MAIL   Вверх
LPBOY
Дата 17.6.2006, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 12.7.2005

Репутация: 20
Всего: 20



Fedor, если придерживать традиционной семантики, то префиксный инкремент должен возвращать ссылку complex&, а постфиксный const complex.

P.S. Хотя нужны ли вообще классу complex операторы инкремента, это еще вопрос. smile 
--------------------
Каждый человек по-своему прав, а по-моему нет...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0691 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.