Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.72/29: Рейтинг темы: голосов - 29, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 30.12.2015
Сообщений: 45
1

бинарный "++": "Counter" не определяет этот оператор или преобразование к типу приемлемо к встроенному

05.02.2016, 15:21. Показов 5421. Ответов 7
Метки нет (Все метки)

бинарный "++": "Counter" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <conio.h>
using namespace std;
class Counter {
private:
    int count;
public: 
    Counter():count(0)
    {}
 
    int getCount() {
        return count;
    }
 
    void operator++() {
        count++;
    }
};
int main() {
    setlocale(0,"");
 
    Counter n1;
    cout << n1.getCount() << endl;
    n1++;
    cout << n1.getCount() << endl;
 
 
 
    _getch();
    return 0;
}
Добавлено через 21 секунду
В чем ошибка?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2016, 15:21
Ответы с готовыми решениями:

C2676. Бинарный "++": не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
Учу C++ по книге, в конце главы есть задание: написать функцию подсчета символов к классу Document....

Ошибка C2676. Бинарный "++" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
Не могу исправить ошибку C2676. Заранее спасибо #include &lt;iostream&gt; #include &lt;cmath&gt; using...

ошибки "Complex" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
заголовочный файл #include &lt;iostream&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...

Ошибка: не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
Здравствуйте! Не могу понять, почему так нельзя делать (Ошибка: не определяет этот оператор или...

__________________

Записывайтесь на профессиональные курсы C++ разработчиков
7
855 / 445 / 111
Регистрация: 06.07.2013
Сообщений: 1,483
05.02.2016, 15:32 2
C++
1
2
3
4
5
    Counter operator++(int) {
        Counter temp(*this);
        temp.count ++;
        return temp;
    }
0
104 / 104 / 99
Регистрация: 30.06.2015
Сообщений: 272
05.02.2016, 15:34 3
Лучший ответ Сообщение было отмечено vbartalevich как решение

Решение

vbartalevich, ошибка в том что шапка у вас для ++n1, а вы пытаетесь сделать n1++
почитайте про "постфикс" и "префикс" перегрузку операторов!

пример:

C++
1
2
3
void operator++(int) {
        count++;
    }
1
855 / 445 / 111
Регистрация: 06.07.2013
Сообщений: 1,483
05.02.2016, 15:34 4
Цитата Сообщение от vbartalevich Посмотреть сообщение
В чем ошибка?
постфиксный ++ определяется в классе так :
Класс operator++(int)
0
104 / 104 / 99
Регистрация: 30.06.2015
Сообщений: 272
05.02.2016, 15:35 5
Raali, копи-конструктор не реализован автором...так что не покатит....
0
14092 / 7561 / 1794
Регистрация: 30.01.2014
Сообщений: 12,653
05.02.2016, 22:18 6
Цитата Сообщение от ThePlague Посмотреть сообщение
копи-конструктор не реализован автором...так что не покатит....
Вы б хоть проверяли что ли, прежде чем писать
Конечно покатит, компилятор сгенерирует конструктор копии.

Ошибка у него там в другом. Вместо
temp.count++;
Нужно
count++;
Конструктор копии не при чем
0
104 / 104 / 99
Регистрация: 30.06.2015
Сообщений: 272
05.02.2016, 23:20 7
DrOffset, и в чем тогда смысл создавать объект класса (temp), а патом обращаться на прямую к атрибуту (count)?
типа постфикс реализация....как-то перемудренно...в таком случае лучше вызывать префикс тогда в теле...
0
14092 / 7561 / 1794
Регистрация: 30.01.2014
Сообщений: 12,653
05.02.2016, 23:36 8
Цитата Сообщение от ThePlague Посмотреть сообщение
и в чем тогда смысл создавать объект класса (temp), а патом обращаться на прямую к атрибуту (count)?
Смысл в сохранении семантики встроенного постфиксного оператора.
1) Во временный объект сохраняется текущее значение;
2) Инкрементируется текущее значение;
3) Возвращается временный объект.
Есть ли смысл делать это в данном конкретном случае - пусть ТС решает. Но идея сохранить семантику - верная.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.02.2016, 23:36

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Ошибка C2676 бинарный "[": "matr" не определяет этот оператор
Компилятор возмущается:( Выдает ошибки: отсутствует оператор &quot;&quot;, соответствующий этим операндам...

Error C2679: бинарный "<<": не найден оператор, принимающий правый операнд типа "std::string" (или приемлемое
эмулятор работы банкомата Например #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

Обработка "null" в MS Access "Приведение типа "|DBNull" к типу "String" является недопустимым"
Здравствуйте. Работаю с базой MS Access Вывожу в DataGridView таблицу Проблема следующая, если у...

Как написать регулярное выражение для выдергивания английских букв и символов: "+", ",", ":", "-", " ", "!", "?" и "."
Не могу ни как собразить как написать регулярное выражение для выдергивания английских букв и...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.