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

Невозможно обратиться к protected член, объявленному в классе "Counter" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Апишите программу которая может перечислять членов ордена по действительным именам по должностям http://www.cyberforum.ru/cpp-beginners/thread1232611.html
4.Вступив в Благотворительный орден программистов(Benevolent Order of Programmers- BOP), вы можете быть известны на собраниях ВОР под своим действительным именем, по названию должности или по...
C++ Создание объекта в области памяти Не могу разобраться с таким вопросом. Пусть есть у нас класс Example (у него есть стандартный конструктор и неважно что он делает). и имеется следующая функция: void foo(){ ... http://www.cyberforum.ru/cpp-beginners/thread1232597.html
C++ Как сделать преобразование в string для своего класса
есть 2 строчки кода Var a = "dfsfdfd"; string b = (string)a; в класса есть перегруженный оператор operator string (); но компилятор на него не реагирует и тупо не хочет компилировать, сразу...
C++ Требуется собрать кучу object в один контейнер и искать их по object_name
Пусть дана структура вида: struct object { object(const std::string&_object_name):object_name(_object_name){} bool operator<(const object&o)const{return object_name<o.object_name;} ...
C++ Нужно продублировать первое чётное число в односвязном списке http://www.cyberforum.ru/cpp-beginners/thread1232561.html
Написал вот такой код, он рабочий, но никак не пойму, что нужно сделать, чтоб выполнялась поставленная задача. Прошу помочь. #include "stdafx.h" #include <iostream> #include <string.h> #include...
C++ Как циклически организовать задание значений, пока не получится то, что надо Делал игру кубики нужно сделать ничью что бы когда выбивало два одинаковых значений перекручивало сначала если нету два одинаковых значения переходил к следующему сигменту кода подробнее

Показать сообщение отдельно
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
23.07.2014, 16:39
Цитата Сообщение от ForEveR Посмотреть сообщение
Чего это он закрытый? Он защищенный. И зовется из функции потомка.
Ну это и имелось ввиду.
Цитата Сообщение от stzer Посмотреть сообщение
ForEveR, просто непонятно, почему потомок не видит конструктора базового класса.
Он его видит однако для того что бы создать объект его конструктор должен быть открытым. В противном случае конструирование возможно только посредством статической функции, как, например, это применяется в паттерне синглон. А вот вам и пример:
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>
using namespace std;
typedef unsigned int uint;
class Counter
{
protected:
    uint count;
    Counter() : count(0)
    { }
    Counter(int c) : count(c)
    { }
public:
    uint get_count () const
    { return count; }
    Counter operator++()
    { return Counter(++count); }
    static Counter init(int i = 0) {
       return Counter(i);
    }
};
 
class CountDn : public Counter
{
public:
    Counter operator--()
    { return init(--count); }
};
 
int main()
{
    CountDn c1;
    cout<<"c1= "<<c1.get_count();
    ++c1; ++c1; ++c1;
    cout<<"\nc1= "<<c1.get_count();
    --c1; --c1;
    cout<<"\nc1= "<<c1.get_count()<<endl;
    system("pause");
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru