Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Dimka-novitsek
14 / 14 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
#1

Что такое перегрузка оператора? Что у меня в коде за ошибка? - C++

23.10.2013, 20:22. Просмотров 945. Ответов 12
Метки нет (Все метки)

Что же я написал?? Что оно не компилится?
Что значит error C2275: Superclass: недопустимое использование этого типа в качестве выражения

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
32
#include <string> 
#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; }
Superclassr Peregruzzatel++ () { ++Tselaja; return Superclass;}
 
private:
int Tselaja;
 };
 Superclass::Superclass():
 Tselaja(0)
 {cout << "Superclass()" <<  endl; }
 
 
 int main()
 {
Superclass Bject;  cout << "Tselaja " <<Bject.Vydavatell() << endl;
Superclass а = ++Bject; cout << "Tselaja " <<Bject.Vydavatell() << endl;
cout << "Tselaja " << а.Vydavatell() << endl;
system("pause  "); return 0;
 }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2013, 20:22
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Что такое перегрузка оператора? Что у меня в коде за ошибка? (C++):

Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с файлами?
Что такое файловый буфер? Что такое режим (модификатор) доступа, при работе с...

Нюансы использования оператора запятая или что такое UB и с чем его едят
Почему студия и ideone выдают разные значения для a и b? в студии выходит a...

Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?
Что такое рекурсивный тип данных? Что такое конструкция рекурсивного типа?

Что такое хэндлер файла? Что такое файловый указатель?
Что такое хэндлер файла? Что такое файловый указатель?

Что такое заголовочный файл? Что такое файл исходного кода? Рассмотрите назначение каждого из них
Что такое заголовочный файл? Что такое файл исходного кода? Рассмотрите ...

Перегрузка оператора присваивания = (найти ошибку в коде)
Преподаватель написал, что перегрузка оператора присвоить выполнена не верно. Я...

12
coloc
погромист
411 / 247 / 30
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
23.10.2013, 20:30 #2
Слишком много транслита и код подан в виде вихря говна. Не буду я такое читать. Если уважаешь форумчан, то исправь код до читаемости и в будущем пиши читаемый код. Или пробел сломан?
1
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2013, 20:35 #3
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
32
#include <string> 
#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 *this;}
 
private:
    int Tselaja;
};
Superclass::Superclass():
Tselaja(0)
{cout << "Superclass()" <<  endl; }
 
 
int main()
{
    Superclass Bject;  cout << "Tselaja " <<Bject.Vydavatel() << endl;
    Superclass а = ++Bject; cout << "Tselaja " <<Bject.Vydavatel() << endl;
    cout << "Tselaja " << а.Vydavatel() << endl;
    system("pause  "); return 0;
}
1
Dimka-novitsek
14 / 14 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
23.10.2013, 21:45  [ТС] #4
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
32
33
34
35
36
37
38
39
#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; }
     Superclassr Peregruzzatel++ () { ++Tselaja; return Superclass;}
 
private:
     int Tselaja;
 };
 
 
 
 Superclass::Superclass():
 Tselaja(0)
 {cout << "Superclass()" <<  endl; }
 
 
 int main()
 {
Superclass Bject;  
           cout << "Tselaja " <<Bject.Vydavatell() << endl;
Superclass а = ++Bject;
           cout << "Tselaja " <<Bject.Vydavatell() << endl;
           cout << "Tselaja " << а.Vydavatell() << endl;
 
 system("pause  ");
 
 return 0;
 }
Добавлено через 1 час 7 минут
Что такое и что делает operator++??
0
henecs
17 / 17 / 11
Регистрация: 19.05.2013
Сообщений: 135
23.10.2013, 22:01 #5
Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
Superclassr Peregruzzatel++
поржал от души)
1
Dimka-novitsek
14 / 14 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
23.10.2013, 22:14  [ТС] #6
Да... Я вот вставил этот оператор. Что за дела? там же есть точка с запятой.

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
32
33
34
35
36
37
38
39
#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; }
     Superclassr operator++ () { ++Tselaja; return Superclass;}
 
private:
     int Tselaja;
 };
 
 
 
 Superclass::Superclass():
       Tselaja(0)
 {cout << "Superclass()" <<  endl; }
 
 
 int main()
 {
Superclass Bject;  
           cout << "Tselaja " <<Bject.Vydavatell() << endl;
Superclass а = ++Bject;
           cout << "Tselaja " <<Bject.Vydavatell() << endl;
           cout << "Tselaja " << а.Vydavatell() << endl;
 
 system("pause  ");
 
 return 0;
 }
cpp(15): error C2143: синтаксическая ошибка: отсутствие ";" перед "++"
0
Jupiter
Каратель
Эксперт С++
6568 / 3989 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.10.2013, 22:17 #7
Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
Superclass а = ++Bject;
буква а кириллическая

Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
Superclassr operator++ ()
wtf&
1
castaway
Эксперт С++
4927 / 3034 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
23.10.2013, 22:22 #8
Тебе же дали исправленный код в 3-м сообщении. Зачем ты его обратно переделываешь в
Цитата Сообщение от coloc Посмотреть сообщение
вихрь говна
?
0
Jupiter
23.10.2013, 22:31
  #9

Не по теме:

castaway, одно к другому липнет:tomatos:

1
Dimka-novitsek
14 / 14 / 2
Регистрация: 26.04.2012
Сообщений: 1,091
23.10.2013, 23:04  [ТС] #10
Спасибо!

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#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.Vydavatell() << endl;
Superclass a = ++Bject;
           cout << "Tselaja " <<Bject.Vydavatell() << endl;
           cout << "Tselaja " << a.Vydavatell() << endl;
 
 system("pause  ");
 
 return 0;
 }
cpp(15): error C2275: Superclass: недопустимое использование этого типа в качестве выражения - что же опять?
cpp(29): error C2084: функция "Superclass Superclass::operator ++(void)" уже имеет текст реализации - это оно к чему?
0
Jupiter
Каратель
Эксперт С++
6568 / 3989 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.10.2013, 23:11 #11
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
32
33
34
35
36
37
38
39
40
#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; }
 
 
 
 
 int main()
 {
Superclass Bject;  
           cout << "Tselaja " <<Bject.Vydavatel() << endl;
Superclass a = ++Bject;
           cout << "Tselaja " <<Bject.Vydavatel() << endl;
           cout << "Tselaja " << a.Vydavatel() << endl;
 
 
 return 0;
 }
Добавлено через 50 секунд
Dimka-novitsek, сходи что ли в школу на урок информатики - печатать в ворде без ошибок потренируйся
0
старвит
0 / 0 / 1
Регистрация: 23.03.2016
Сообщений: 76
Завершенные тесты: 2
11.03.2017, 19:20 #12
Если ещё актуально :
1. насчёт 15 строки - возвращать можно только объект класса(переменную типа superclass, в твоём случае.) Напиши return *this - это вернет текущий объект.
2. Блин, посмотри на 15 строку! Ты же описал уже там реализацию. Оставь или реализацию 15 строки, или 29
0
Photofenix
61 / 61 / 39
Регистрация: 18.11.2016
Сообщений: 502
Завершенные тесты: 1
11.03.2017, 19:34 #13
Оператор перегрузки служит для изменения функционала арифметических операций над объектами классов..
В данном случае:
C++
1
Superclass& operator++() { ++Tselaja; return *this;}
Оператор имеет ссылку, что позволяет его использовать оператор слева от объекта.
C++
1
++а
Если бы не было ссылки, то оператор можно было бы использовать только так:
C++
1
а++
Пример перегрузки оператора:
C++
1
2
3
4
тип operator /= ( class value){
   class temp;
   temp = a + value.a;
}
У вас два объекта класса job1, job2.
Так вот, перегрузкой операторов мы можем кодом

C++
1
/= - запрограммированный оператор.
сложить два объекта.
0
11.03.2017, 19:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2017, 19:34
Привет! Вот еще темы с решениями:

Перегрузка - подчеркивает что ошибка здесь - a.strb
Texts Texts :: operator + (const Texts &amp;a) { Texts tmp; tmp.str = strh +...

Ошибка - Необработанное исключение. Что такое?
Всем привет! В ходе компиляции программы вылетает такая ошибка. Что это такое?

В этой части кода происходит объявление функций? Что такое void? Что в скобках?
В этой части кода происходит объявление функций? Что такое void? Что в скобках?...

Что такое "перегрузка операторов"? Каковы принципы работы перегруженных операторов и назначение указателя this
Добрый день . Помогите понять принцип работы перегрузки операторов. ...


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

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

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