Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
_Valera_
490 / 372 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
1

Наследование static членов

01.12.2015, 13:30. Просмотров 891. Ответов 4
Метки нет (Все метки)

Какое нормальное решение такой задачи:

Есть базовый класс. И от него нужно унаследовать много других. И при этом есть множество статических членов - уникальных для каждого наследника.

И в итоге в планах что это будет массив с типом базового класса, в котором лежат наследники и можно вызывать их статические переменные.


Спасибо!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2015, 13:30
Ответы с готовыми решениями:

Наследование классов и обращение к Private/Static
Здравствуйте! У меня возникла проблема при попытке унаследовать параметры...

Crash из-за static-членов классов
Программа зависает или крашится из-за статических членов классов. Я пробовал...

Наследование static атрибута(хранение количества объектов наследуемых классов)
Есть абстрактный класс base, от него наследуются 3 класса child1 child2 child3....

Инициализация в объявлении константных статических (const static) членов-данных класса.
Привет. Подскажите пожалуйста почему нельзя создавать в классе const static...

Запретить наследование некоторых членов базового класса
можно ли запретить унаследование некоторых членов базового(любого) класса?

4
rikimaru2013
C++ Game Dev
2472 / 1141 / 348
Регистрация: 30.11.2013
Сообщений: 3,709
01.12.2015, 13:37 2
Лучший ответ Сообщение было отмечено _Valera_ как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
virtual std::string getClassName() const
{
    return s_className;                     // static const std::string s_className = "Foo";
}
 
Или как Майерс со своими локал статик
 
virtual std::string getClassName() const
{
    static std::string name = "Foo";
    return name;                        
}
1
_Valera_
490 / 372 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
01.12.2015, 13:47  [ТС] 3
rikimaru2013, И она гарантировано будет одна (даже при повторном вызове функции ) Ну в смысле они они будут переопределяться или нет?
0
rikimaru2013
C++ Game Dev
2472 / 1141 / 348
Регистрация: 30.11.2013
Сообщений: 3,709
01.12.2015, 13:53 4
строка 10 выполнится один раз при первом вызове метода у любого экземпляра класса и поместит в область памяти name, где она будет жить до конца работы программы.
1
_Valera_
490 / 372 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
01.12.2015, 14:00  [ТС] 5
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
строка 10 выполнится один раз при первом вызове метода у любого экземпляра класса и поместит в область памяти name, где она будет жить до конца работы программы.
то что надо!
0
01.12.2015, 14:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2015, 14:00

Заменить наследование классов на наследование интерфейсов
#include <iostream> #include <assert.h> using namespace std; int...

найти сумму 10-ти членов следующих общих членов,которые даны снизу
найти сумму 10-ти членов следующих общих членов,которые даны снизу...

найти сумму 10-ти членов следующих общих членов,которые даны снизу
Найти сумму 10-ти членов следующих общих членов,которые даны снизу. {a}_{n} =...


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

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

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