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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2013, 23:59   #1
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 588
По умолчанию Ошибки, operator++- собствено, я плохо понимаю что пишу.

Пожалуста, поразясняйте ошибки, помогите окультурить код. Как и что вобще в моей программе действует, вернее не действует.

Код:
#include <iostream> // для объекта cout
using namespace std;
 
#include<iomanip>
//Этот файл содержит большую часть манипуляторов C++. Если вы не знаете, что такое манипулятор,
 не беспокойтесь. Просто подключите это файл смело и не раздумывая  вместе с iostream, хуже не станет.
#include<fstream> 
//Подключается при работе с файлами.
 class Superclass
 {
 public:
     Superclass();
    ~Superclass(){ }
       int Vydavatel()const { return Tselaja; }
       void Prinymatel(int B) { Tselaja = Tselaja+B; }
       Superclass operator++ () { ++Tselaja; return Superclass;}
 
 private:
       int Tselaja;
 };
 
 
 
 Superclass::Superclass():
       Tselaja(0)
 {cout << "Superclass()" <<  endl; }


 Superclass Superclass::operator++()
 {    Superclass Bum;
      Bum.Prinymatel(50);
      return Bum;   }
 
 
 int main()
 {
Superclass Bject;  
           cout << "Tselaja " <<Bject.Vydavatel() << endl;
Superclass a = ++Bject;
           cout << "Tselaja " <<Bject.Vydavatel() << endl;
           cout << "Tselaja " << a.Vydavatel() << endl;
 
 system("pause  ");
 
 return 0;
 }

1>d:\проги\uffff\uffff\fffff.cpp(15 ): error C2275: Superclass: недопустимое использование этого типа в качестве выражения
1>d:\проги\uffff\uffff\fffff.cpp(29 ): error C2084: функция "Superclass Superclass:perator ++(void)" уже имеет текст реализации
1> d:\проги\uffff\uffff\fffff.cpp(15): см. предыдущее определение "++"
1>d:\проги\uffff\uffff\fffff.cpp(38 ): error C2264: Superclass:perator ++: ошибка в определении или объявлении функции; функция не вызвана
1>d:\проги\uffff\uffff\fffff.cpp(38 ): error C2088: ++: недопустимо для class

Последний раз редактировалось Stilet; 10.11.2013 в 11:11.
Dimka-novitsek вне форума Ответить с цитированием
Старый 24.10.2013, 02:33   #2
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Вы повторно определили operator++.
Нарушение ODR. One Definition Rule - правило одного определения
Igor95 вне форума Ответить с цитированием
Старый 24.10.2013, 12:46   #3
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 588
По умолчанию

Спасибо!!!

Пожалуста, обьясните про оператор operator++. честно написать, я вобще почти ничего не понял. Как он действует? Для чего он нужен?

Последний раз редактировалось Stilet; 10.11.2013 в 14:27.
Dimka-novitsek вне форума Ответить с цитированием
Старый 24.10.2013, 14:25   #4
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Для выполнения операции пре-инкремента.
Вы его перегружаете, чтобы он сработал конкретно для типа данных вашего объекта.
Igor95 вне форума Ответить с цитированием
Старый 24.10.2013, 15:05   #5
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 588
По умолчанию

А может кто-то привести пример с operator++, как все же правильно?
Dimka-novitsek вне форума Ответить с цитированием
Старый 24.10.2013, 18:46   #6
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Код:
Superclass& Superclass::operator++()
{
++this -> Tselaja;
return *this;
}
Ну вот так...

Последний раз редактировалось Igor95; 24.10.2013 в 18:48.
Igor95 вне форума Ответить с цитированием
Старый 24.10.2013, 21:30   #7
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 588
По умолчанию

Спасибо!!!

Пожалуста напомните что дает оператор this. Кажется он дает то ли ссылку на обьект то ли указатель? А где здесь обьект? А что вот это -> за знак?

Последний раз редактировалось Stilet; 10.11.2013 в 14:28.
Dimka-novitsek вне форума Ответить с цитированием
Старый 10.11.2013, 04:29   #8
Ezhik Kihze
Форумчанин
 
Регистрация: 24.12.2012
Сообщений: 639
По умолчанию

Указатель на текущий объект.
Класс есть описание объекта. this указатель на этот "текущий", конкретный объет.
Доступ через указатель, типа (*this).
ICQ: 677936656 Gmail: ekEmbed@gmail.com
Ezhik Kihze вне форума Ответить с цитированием
Старый 10.11.2013, 13:43   #9
Dimka-novitsek
Форумчанин
 
Аватар для Dimka-novitsek
 
Регистрация: 22.04.2013
Сообщений: 588
По умолчанию

Спасибо!!!
Dimka-novitsek вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
А это плохо если тебе не стыдно за то, что ты эгоист? Alar Свободное общение 165 25.04.2013 18:32
В чем причина ошибки? Operator not... Effort Помощь студентам 0 20.06.2011 03:35
Не понимаю причину ошибки( DreamMan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 05.05.2011 17:05
Укажите ошибки в программе не давно пишу на си++ zloymag Общие вопросы C/C++ 5 19.12.2009 15:59