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

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

Войти
Регистрация
Восстановить пароль
 
AlexP11223
36 / 37 / 4
Регистрация: 20.04.2011
Сообщений: 288
#1

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

31.05.2011, 11:46. Просмотров 348. Ответов 7
Метки нет (Все метки)

Почему в выделенных местах пишет ошибку про неопределенность? Если оставить наследование только от 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]--); }
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2011, 11:46     Наследование\перегрузка, не понимаю в чем ошибка
Посмотрите здесь:

Наследование, не понимаю в чем ошибка - C++
Задание из Лафоре, наследование. Даже пример есть, но почему-то не работает: в консоле выводит первые 79 символов s1 и все. VS 2010 class...

Не понимаю в чем ошибка - C++
задача заключается в том, чтобы ввести с клавы либо считать с файла двумерный массив вещественных чисел и вывести их на экран, так же нужно...

Не понимаю в чем ошибка. Неправильно считает количество повторений - C++
Вот код. Программа должна считывать 4 числа, и выводить кол-во повторений. Она выводит, но неправильно, когда 2 повторения выводит 6. ...

Наследование. Элементарный пример. В чем ошибка? - C++
Почему не работает такой пример: #include <conio.h> #include <math.h> #include <iostream> using namespace std; class f { ...

Не могу понять, в чем ошибка. Наследование классов - C++
Начал изучать наследование классов и и "затормозил" на такой простенькой программе. Не могу понять в чем ошибка. #include <iostream> ...

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

Типы шаблонов и перегрузка - в чем ошибка компиляции? - C++
Добрый день! Есть класс template <class T> class Cls { void m1(T& val) {} void m1(const T& val) {}

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 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
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 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
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 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++
Доброго времени суток. Где я допустил ошибку? Перегрузка оператора как-будто игнорируется. Выводит просто &quot;test&quot;, а я ожидаю &quot;: test&quot;. ...

Как правильно производится наследование элементов от шаблона класса? В чем ошибка? - C++
Приведу чисто условный пример. Есть какой-нибудь шаблон класса: template &lt;class tempType&gt; class Base { protected: tempType...

не понимаю как сделать наследование классов - C++
Народ, здарова! Есть код: #include&lt;iostream.h&gt; #include&lt;math.h&gt; #include&lt;conio.h&gt; #include&lt;string.h&gt; enum...

Немного не понимаю как правильно сделать наследование - C++
Вот например, есть структура Point(точка). Если надо сделать структуру Round(круг), то в этом случае надо наследовать Point потому что у...

Наследование и перегрузка << - C++
Здравствуйте! Столкнулся со следующей проблемой: class A { int data,info; // .. public: friend void operator &lt;&lt;(ostream &amp;a,...


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

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

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