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

Ошибка с перегрузкой операторов - C++

Восстановить пароль Регистрация
 
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
30.03.2010, 23:31     Ошибка с перегрузкой операторов #1
копилятор видимо тупит или я туплю или автор книги
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class countt{
public:
    int getvar()const{return itsvar;}
    void setvar(int var){itsvar=var;}
    void inc(){itsvar++;}
    void operator++(){++itsvar;}
    countt(){itsvar(0);}
    ~countt(){}
private:
    int itsvar;
};
 
int main(){
    countt x;
    cout<<"x="<<x<<endl;
    x++;
    cout<<"x="<<x<<endl;
system("pause");
return 0;
 
}
Error 17 error C2064: term does not evaluate to a function taking 1 arguments d:\c++ projects\proba\proba\code.cpp 15
Error 18 error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'countt' (or there is no acceptable conversion) d:\c++ projects\proba\proba\code.cpp 23
Error 20 error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'countt' (or there is no acceptable conversion) d:\c++ projects\proba\proba\code.cpp 25
Добавлено через 2 минуты
пардон,оказалось что я тупил..должен был написать x.getvar()

Добавлено через 38 секунд
а как сделать так чтобы без методов получить значение?объявить член как публичный?

Добавлено через 1 минуту
а почему на эту строку орет?
C++
1
    void operator+-+(){++itsvar;}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vorona
Peace 2 all shining faces
 Аватар для Vorona
660 / 522 / 44
Регистрация: 05.03.2010
Сообщений: 1,256
31.03.2010, 01:25     Ошибка с перегрузкой операторов #2
а что такое +-+?)
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
31.03.2010, 01:35     Ошибка с перегрузкой операторов #3
МедведЪ, добавь в public
C++
1
2
3
4
friend ostream& operator << ( ostream& ost, const countt& c ){
    ost << c.itsvar;
    return ost;
}
и будет тебе счастье.
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
31.03.2010, 10:50  [ТС]     Ошибка с перегрузкой операторов #4
Цитата Сообщение от Vorona Посмотреть сообщение
а что такое +-+?)
оператор, нельзя чтобы я сам свой создал?

Добавлено через 20 секунд
Цитата Сообщение от easybudda Посмотреть сообщение
и будет тебе счастье
а для чего это?много незнакомого
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
31.03.2010, 10:54     Ошибка с перегрузкой операторов #5
Цитата Сообщение от МедведЪ Посмотреть сообщение
оператор, нельзя чтобы я сам свой создал?
Нет, нельзя

Добавлено через 1 минуту
Только вот эти:
Код
+    -    *    /    =    <    >    +=   -=   *=   /=   <<   >>
<<=  >>=  ==   !=   <=   >=   ++   --   %    &    ^    !    |
~    &=   ^=   |=   &&   ||   %=   []   ()   ,    ->*  ->   new 
delete    new[]     delete[]
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
31.03.2010, 11:55  [ТС]     Ошибка с перегрузкой операторов #6
easybudda, так что код делает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2010, 12:29     Ошибка с перегрузкой операторов
Еще ссылки по теме:

C++ Нахождение квадрата числа с перегрузкой операторов и функций
C++ Разница между перегрузкой операторов внешней или внутренней функцией
C++ Объясните работу кода с перегрузкой операторов

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

Или воспользуйтесь поиском по форуму:
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
31.03.2010, 12:29     Ошибка с перегрузкой операторов #7
Цитата Сообщение от МедведЪ Посмотреть сообщение
easybudda, так что код делает
Перегружает оператор "поместить в поток" для твоего класса, потому как без подсказки компилятор не узнает как это делать с твоим классом.
Yandex
Объявления
31.03.2010, 12:29     Ошибка с перегрузкой операторов
Ответ Создать тему
Опции темы

Текущее время: 00:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru