Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
#1

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

23.10.2013, 20:22. Просмотров 896. Ответов 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++):

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

Нюансы использования оператора запятая или что такое UB и с чем его едят - C++
Почему студия и ideone выдают разные значения для a и b? в студии выходит a = 10 , b = 10 в ideone a = 20, b =10 #include...

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

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

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

Перегрузка оператора присваивания = (найти ошибку в коде) - C++
Преподаватель написал, что перегрузка оператора присвоить выполнена не верно. Я ошибки не вижу. Может кто подскажет? #include &lt;iostream&gt; ...

12
coloc
погромист
411 / 247 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
23.10.2013, 20:30 #2
Слишком много транслита и код подан в виде вихря говна. Не буду я такое читать. Если уважаешь форумчан, то исправь код до читаемости и в будущем пиши читаемый код. Или пробел сломан?
1
alsav22
5429 / 4824 / 442
Регистрация: 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 / 0
Регистрация: 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 / 0
Регистрация: 19.05.2013
Сообщений: 135
23.10.2013, 22:01 #5
Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
Superclassr Peregruzzatel++
поржал от души)
1
Dimka-novitsek
14 / 14 / 0
Регистрация: 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
Каратель
Эксперт С++
6564 / 3985 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.10.2013, 22:17 #7
Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
Superclass а = ++Bject;
буква а кириллическая

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

Не по теме:

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

1
Dimka-novitsek
14 / 14 / 0
Регистрация: 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
Каратель
Эксперт С++
6564 / 3985 / 227
Регистрация: 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 / 0
Регистрация: 23.03.2016
Сообщений: 75
Завершенные тесты: 2
11.03.2017, 19:20 #12
Если ещё актуально :
1. насчёт 15 строки - возвращать можно только объект класса(переменную типа superclass, в твоём случае.) Напиши return *this - это вернет текущий объект.
2. Блин, посмотри на 15 строку! Ты же описал уже там реализацию. Оставь или реализацию 15 строки, или 29
0
Photofenix
59 / 59 / 11
Регистрация: 18.11.2016
Сообщений: 467
Завершенные тесты: 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 - C++
Texts Texts :: operator + (const Texts &amp;a) { Texts tmp; tmp.str = strh + a.strb; } подчеркивает что ошибка здесь - a.strb ...

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

В этой части кода происходит объявление функций? Что такое void? Что в скобках? - C++
В этой части кода происходит объявление функций? Что такое void? Что в скобках? void get(float **mas, int N, int M); void...

Не могу понять что за ошибка в коде - C++
Вот код: #include &lt;iostream&gt; using namespace std; void main() { setlocale(0, &quot;ru&quot;); int X, Y ;


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

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

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