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

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

Войти
Регистрация
Восстановить пароль
 
DJOGUREC
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 11
#1

не работает префиксный оператор в классе - C++

27.10.2013, 16:02. Просмотров 223. Ответов 4
Метки нет (Все метки)

Проблема : не работает "++plus" в "void ClassB::count()"
Есть вариант решить это так : поменять "private" на "protected" в обоих классах и из класса "ClassB" убрать "int plus" 22 линия. Но как решить эту проблему не убирая "int plus" из "ClassB"
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
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <cstdlib>
using namespace std;
 
class ClassA
{
    public:
        ClassA(int);
        void print();
    private:
        int plus;
};
class ClassB: public ClassA
{
    public:
        ClassB(int,int);
        void print();
        void count();
    private:
        int minus;
        int plus;
};
ClassA::ClassA(int PLUS)
{
    plus=PLUS;      
}
void ClassA::print()
{
    cout << plus << endl;    
}
//////////////////////////////////////////////////////
ClassB::ClassB(int PLUS, int MINUS) : ClassA(PLUS)
{
    minus=MINUS;      
}
void ClassB::print()
{
    ClassA::print();
    cout << minus << endl;    
}
void ClassB::count()
{
    ++plus;
    --minus;
}
int main()
{
    ClassB b(5,5);
    b.print();  // ожидаем и получаем 5 и 5 
    
    b.count(); //  ++plus  --minus
    b.print(); //   ожидаем 6 и 4 , но получаем 5 и 4. Почему? объясните пожалуйста.
    
    system ("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2013, 16:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос не работает префиксный оператор в классе (C++):

Поясните как работает постфиксный и префиксный оператор на примере - C++
Здравствуйте. Здесь префиксный понятно, а что если изменить на постфиксный, как код будет работать? vector&lt;int&gt;::size_type...

В классе дек неправильно работает оператор + - C++
Я написал класс дек. И вскоре обнаружилась проблема того что оператор + работает не так как надо. Было написано 3 оператора. Дек+Дек....

Переопределить оператор << в классе - C++
Добрый день. Не пойму как переопределить оператор &lt;&lt; для моего класса Пробую так #include &lt;iostream&gt; class MyClass ...

Оператор вывода в производном классе - C++
Как из производного класса вызвать перегруженный оператор вывода из базового класса? Я показал в комментарии где нужно это вставить ...

Перегруженный оператор = в классе String - C++
Перегруженный оператор = почему то не работает, не могу разобраться в чем проблема, вроде все норм. String &amp;String::operator=(const...

Шаблонный оператор присваивания в шаблонном классе - C++
Почему, в таком коде, срабатывает оператор присваивания по умолчанию? template &lt;class T&gt; class A { T x; public: A(T...

4
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 16:08 #2
У тебя plus определен и в ClassA и в ClassB.
1
DJOGUREC
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 11
27.10.2013, 16:11  [ТС] #3
Я понимаю но это не ответ на мой вопрос. Мне надо чтоб plus был в обоих классах.
0
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 16:14 #4
Ты изменяешь ClassB :: plus, а выводишь ClassA :: plus. Так понятнее?
Цитата Сообщение от DJOGUREC Посмотреть сообщение
Мне надо чтоб plus был в обоих классах.
Надо - исправляй. И это ответ на твой вопрос.
1
DJOGUREC
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 11
27.10.2013, 16:16  [ТС] #5
Спасибо! все ясно.
0
27.10.2013, 16:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2013, 16:16
Привет! Вот еще темы с ответами:

Как перегрузить оператор в виртуальном классе - C++
Помогите пожалста разобраться с перегрузкой операторов в абстрактных классах!!!! Есть чисто виртуальный класс физических величин ...

Как в классе перегрузить оператор двойного индексирование? - C++
Вот мой класс.. class Matrix { int ** m; public: Matrix() { srand(time(NULL)); m=new int*;

Реализовать оператор сравнения в классе длинных чисел (длинная арифметика) - C++
Здравствуйте, дорогие форумчане. Недавно назрел вопрос, как бы сделать сравнение чисел длинной арифметики в дальнейшем коде? Сравнение...

В классе Строка перегрузить оператор () для приема целочисленных и дробных значений - C++
всем привет, помогите пожалуйста с кодом на перегрузку оператора как перегрузить () - этим строку в число int и double


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

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

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