Форум программистов, компьютерный форум CyberForum.ru

Наследование\перегрузка, не понимаю в чем ошибка - C++

Восстановить пароль Регистрация
 
AlexP11223
36 / 37 / 4
Регистрация: 20.04.2011
Сообщений: 288
31.05.2011, 11:46     Наследование\перегрузка, не понимаю в чем ошибка #1
Почему в выделенных местах пишет ошибку про неопределенность? Если оставить наследование только от Counter, то все норм. Пробовал Counter::count++ тоже самое.
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
class Counter
   {
   protected:                            //NOTE: not private
      unsigned int count;                //count
   public:
      Counter() : count(0)               //constructor, no args
         {  }
      Counter(int c) : count(c)          //constructor, one arg
         {  }
      unsigned int get_count() const     //return count
         { return count; }
      Counter operator ++ ()             //incr count (prefix)
         { return Counter(++count); }
   };
////////////////////////////////////////////////////////////////
class CountDn : public Counter
   {
   public:
      CountDn() : Counter()              //constructor, no args
         { }
      CountDn(int c) : Counter(c)        //constructor, 1 arg
         { }
      CountDn operator -- ()             //decr count (prefix)
         { return CountDn(--count); }
   };
////////////////////////////////////////////////////////////////
class CountP : public Counter, CountDn
{
    CountP() : Counter()
    {}
    CountP(int c) : Counter(c)
    {}
    CountP operator ++ (int) 
    { return CountP([COLOR="Red"]count[/COLOR]++); }
    CountP operator -- (int)
    { return CountP([COLOR="#ff0000"]count[/COLOR]--); }
};
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
31.05.2011, 11:49     Наследование\перегрузка, не понимаю в чем ошибка #2
Nubik756, virtual public Counter. А лучше наследуйся только от CountDn, но открытым наследованием.
AlexP11223
36 / 37 / 4
Регистрация: 20.04.2011
Сообщений: 288
31.05.2011, 11:51  [ТС]     Наследование\перегрузка, не понимаю в чем ошибка #3
Что такое открытое? public? Я еще ничего не знаю про виртуальное)
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
31.05.2011, 11:52     Наследование\перегрузка, не понимаю в чем ошибка #4
Nubik756, public. Раз не знаешь про виртуальное - наследуйся от одного класса. CountDn.
Но очень не уверен, что у тебя будет доступен count в классе CountP.
AlexP11223
36 / 37 / 4
Регистрация: 20.04.2011
Сообщений: 288
31.05.2011, 11:58  [ТС]     Наследование\перегрузка, не понимаю в чем ошибка #5
Пишет про недоступность при попытке что-либо сделать (даже создать объекта CountP)
C++
1
2
3
4
5
6
7
8
9
10
11
class CountP : public CountDn
{
    CountP() : CountDn()
    {}
    CountP(int c) : CountDn(c)
    {}
    CountP operator ++ (int) 
    { return CountP(count++); }
    CountP operator -- (int)
    { return CountP(count--); }
};
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
31.05.2011, 12:03     Наследование\перегрузка, не понимаю в чем ошибка #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
40
41
42
43
44
45
46
47
48
#include <iostream>
 
class Counter
   {
   protected:                            //NOTE: not private
      unsigned int count;                //count
   public:
      Counter() : count(0)               //constructor, no args
         {  }
      Counter(int c) : count(c)          //constructor, one arg
         {  }
      unsigned int get_count() const     //return count
         { return count; }
      Counter operator ++ ()             //incr count (prefix)
         { return Counter(++count); }
   };
////////////////////////////////////////////////////////////////
class CountDn : public Counter
   {
   public:
      CountDn() : Counter()              //constructor, no args
         { }
      CountDn(int c) : Counter(c)        //constructor, 1 arg
         { }
      CountDn operator -- ()             //decr count (prefix)
         { return CountDn(--count); }
   };
////////////////////////////////////////////////////////////////
class CountP : public CountDn
{
public:
        CountP() : CountDn()
        {}
        CountP(int c) : CountDn(c)
        {}
        CountP operator ++ (int) 
        { return CountP(count++); }
        CountP operator -- (int)
        { return CountP(count--); }
}; 
 
int main()
{
    CountP count(5);
    std::cout << count.get_count() << '\n';
    count++;
    std::cout << count.get_count() << '\n';
}
AlexP11223
36 / 37 / 4
Регистрация: 20.04.2011
Сообщений: 288
31.05.2011, 12:21  [ТС]     Наследование\перегрузка, не понимаю в чем ошибка #7
эм...А в чем разница между этим кодом и моим?) Что-то не нашел ни 1 отличия в классах, но почему-то работает)
у меня при аналогичном main'е выдавало
cannot access private member declared in class 'CountP'
1> 1.cpp(47) : see declaration of 'CountP::CountP'
1> 1.cpp(45) : see declaration of 'CountP'
но вроде же ничего не изменилось оО
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2011, 12:27     Наследование\перегрузка, не понимаю в чем ошибка
Еще ссылки по теме:

C++ Не могу понять, в чем ошибка. Наследование классов
C++ Типы шаблонов и перегрузка - в чем ошибка компиляции?

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

Или воспользуйтесь поиском по форуму:
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
31.05.2011, 12:27     Наследование\перегрузка, не понимаю в чем ошибка #8
Строка 31 в новом коде
Yandex
Объявления
31.05.2011, 12:27     Наследование\перегрузка, не понимаю в чем ошибка
Ответ Создать тему
Опции темы

Текущее время: 12:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru