0 / 0 / 0
Регистрация: 17.10.2016
Сообщений: 47
1

Не знаю как исправить ошибку

12.12.2016, 16:16. Показов 1163. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!
В общем делал задание на перегрузку операторов, вот код:

#include "stdafx.h"
#include <iostream>

using namespace std;

class Counter
{
private:
int count;
public:
Counter(): count(0)
{}
void operator++ ()
{
count++;
}

void getPrint()
{
cout << count << endl;
}
~Counter()
{
cout << "RFK" << endl;
}
};

int main()
{
setlocale(LC_ALL, "rus");

Counter c1;
c1.getPrint();
c1++;
c1.getPrint();


system("pause");
return 0;
}

В итоге вылетает ошибка:
Ошибка C2676 бинарный "++": "Counter" не определяет этот оператор или преобразование к типу приемлемо к встроенному оператору
Данный код работает у другого человека! В чем причина, где ошибка?!?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2016, 16:16
Ответы с готовыми решениями:

Не знаю как исправить ошибку
при выводе всего списка не выдает верную информацию. Не могу понять что не так, помогите. Заранее...

Не знаю как исправить ошибку в программе
Добрый день. Вот код программы: #pragma argsused #include &lt;iostream.h&gt; #include &lt;time.h&gt;...

Выдает ошибку, не знаю как исправить
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;iostream&gt; using namespace...

Факториалы. У меня выводит ошибку , но я не знаю , как её исправить

9
114 / 112 / 62
Регистрация: 15.03.2013
Сообщений: 561
Записей в блоге: 5
12.12.2016, 16:31 2
У меня этот код прошел с предупреждением. Копировал без
C++
1
#include "stdafx.h"
0
0 / 0 / 0
Регистрация: 17.10.2016
Сообщений: 47
12.12.2016, 16:37  [ТС] 3
ящюр, попробовал, вот, что вылетело:
Ошибка C1010 непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "stdafx.h"" в источник.
0
99 / 70 / 13
Регистрация: 15.12.2013
Сообщений: 455
12.12.2016, 16:37 4
Лучший ответ Сообщение было отмечено nevbie как решение

Решение

Вместо c1++ напиши ++c1.
Ты определил оператор:

C++
1
2
3
4
void operator++ ()
{
    count++;
}
А это префиксная версия оператора инкретемнта.
Либо напиши так:

C++
1
2
3
4
void operator++ (int)
{
    count++;
}
И будет работать твой c1++
2
114 / 112 / 62
Регистрация: 15.03.2013
Сообщений: 561
Записей в блоге: 5
12.12.2016, 16:41 5
Цитата Сообщение от ASCII Посмотреть сообщение
А это префиксная версия оператора инкремента
Про это я честно уже забыл =))) Есть такое дело. Именно это предупреждение мне компилятор и написал
0
0 / 0 / 0
Регистрация: 17.10.2016
Сообщений: 47
12.12.2016, 16:42  [ТС] 6
ASCII, Круто, все заработало! только вот странно это, так как в задании у, сделано именно как у меня!! и все работает с префиксной версией....не понятно.
0
114 / 112 / 62
Регистрация: 15.03.2013
Сообщений: 561
Записей в блоге: 5
12.12.2016, 16:46 7
Цитата Сообщение от nevbie Посмотреть сообщение
так как в задании
Поверь, в заданиях столько ошибок бывает. Что аж волосы дыбом встают.
1
0 / 0 / 0
Регистрация: 17.10.2016
Сообщений: 47
12.12.2016, 17:06  [ТС] 8
ящюр, https://www.youtube.com/watch?v=NxmocpI3fd4
странно, как тогда у него эти методы работают!?... мне если честно не понятно)))
0
114 / 112 / 62
Регистрация: 15.03.2013
Сообщений: 561
Записей в блоге: 5
12.12.2016, 17:11 9
nevbie, Ну у меня выше описанный код тоже прошел. С предупреждением но прошел. на 3:19 у него видно такое же предупреждение.
0
99 / 70 / 13
Регистрация: 15.12.2013
Сообщений: 455
12.12.2016, 18:32 10
Цитата Сообщение от nevbie Посмотреть сообщение
странно, как тогда у него эти методы работают!?... мне если честно не понятно)))
У него все так, как я написал. Ты видимо проглядел или просто не обратил внимание, бывает
Вот только оператор перегрузки инкремента/декремента лучше перегружать так, чтобы он возвращал ссылку на изменяемый объект.

Проще говоря так:

C++
1
2
3
4
5
6
7
8
9
10
11
// prefix
Object& operator++()
{
// TODO operation
}
 
// postfix
Object& operator++(int)
{
// TODO operation
}
Потому что, если у тебя перегружены для твоего класса Object операторы +/-, то уже выражение:

C++
1
Object result = ++obj1 + obj2;
работать не будут.
0
12.12.2016, 18:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.12.2016, 18:32
Помогаю со студенческими работами здесь

Ошибка, не знаю как исправить
Добрый вечер всем!! У меня возник небольшой вопрос по поводу моей программы... Мне необходимо...

Всплывает ошибка, не знаю как исправить
Во время компиляции (CodeBlocks) компилятор выдает ошибку: cannot open output file...

Работа со структурой, не знаю как исправить
помогите пожалуйста есть структура и массив структуры надо данные массива передать в функцию...

Error LNK2019 не знаю как исправить
Всем привет! Решаю уравнение Фредгольма второго рода методом Галеркина. Если рассматривать...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru