Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создать класс «Квартира», в котором список комнат реализовать как односвязный список https://www.cyberforum.ru/ cpp-beginners/ thread2312087.html
Добрый день,написал фот такой клас по заданию:Создать класс «Квартира», в котором список комнат реализовать как односвязный список. Комната должна содержать информацию о площади и статусе...
C++ Сложить два длинных числа
Есть класс Decimal который наследует виртуальную функцию сложения массивов от базового класса. В классе есть массив типа unsigned char. Необходимо сложить эти два массива. Задача на подобии сложения...
C++ Реализовать класс "курсор", используя конструкторы, перегрузку операций и обработку исключений https://www.cyberforum.ru/ cpp-beginners/ thread2312061.html
Написал код, тут реализован класс "курсор" где указаны манипуляции с разными его параметрами. Сказали теперь выполнить это с конструкторами, перегрузкой операций и обработкой исключений. (и...
C++ Взаимодействие с внешним браузером Мне надо сделать программу, работающую с социальной сетью ВК через ее официальный API. Почти вся работа связана с прямой отправкой запросов и таким же прямым получением ответов (с этим хорошо... https://www.cyberforum.ru/ cpp-beginners/ thread2312060.html
Неправильная последовательность ввода/вывода в консоли C++
Ввод информации о первом студенте правильно работает, а дальше уже нет. Это не мой код и мне сложно в нём разобраться и найти ошибку. Поэтому очень нуждаюсь в вашей помощи. #include "stdafx.h"...
C++ Что такое "нуль-символ" применительно к строке? https://www.cyberforum.ru/ cpp-beginners/ thread2312031.html
Я смотрел что делает функция ~strlen(имя_файла)~. Ей дали такое определение:"Определяет длину указанной строки, без учета нуль-символа". Я не понял, что имеется ввиду под "нуль-символом", и прошу,...
C++ Все нечетные строки матрицы сдвинуть циклически на К элементов влево https://www.cyberforum.ru/ cpp-beginners/ thread2312029.html
Привет! Нужна помощь. Используя функции сформировать с помощью ДСЧ двумерный массив и вывести его на печать. Все нечетные строки матрицы сдвинуть циклически на К элементов влево.
Зачем в условии цикла for минус единица? C++
Всем привет. Вообщем меня озадачила 1 задача где используется итераторы. Я с ней справился. Но написал одну вещь которую сам не могу понять(помогли с ней) Вот код: #include <iostream>...
C++ Записать в файл все простые числа в указанном диапазоне в столбик Пользователь задаёт диапазон чисел и имя файла. Программа записывает в файл все простые числа в указанном диапазоне в столбик. https://www.cyberforum.ru/ cpp-beginners/ thread2312016.html C++ Записать в файл все найденные слова https://www.cyberforum.ru/ cpp-beginners/ thread2312015.html
Пользователь вводит 2 имени файла. В первом файле находится просто текст. Во второй файл программа в столбик запишет все найденные в первом файле слова
C++ Как сделать DLL прослойку
Имеется экзешник, который работает с libcef.dll старой версии. Мне нужно чтобы он работал с dll новой версии. Если я подсовываю ему libcef.dll новой версии то он ругается на отсутствие точки...
C++ Перегрузка оператора постфиксального инкремента, чтобы он обрабатывался в выражении корректно Подскажите, можно ли решить проблему, приводящую к выполнению инструкции вывода строки "WTF?" в коде? Как перегрузить оператор "++" для класса Int, чтобы при использовании его в выражении для... https://www.cyberforum.ru/ cpp-beginners/ thread2312000.html
36 / 37 / 10
Регистрация: 02.04.2016
Сообщений: 300
0

Как правильно группировать статические данные, создаваемые по-разному? - C++ - Ответ 12842639

16.08.2018, 03:09. Показов 1873. Ответов 11
Метки (Все метки)

Есть у меня базовый класс:
C++
1
class A { };
Хочу обогатить его наследников статическими данными.
Тогда возникает проблема: наследников много = много повторных деклараций этих статических данных.
Хочется хранить всё в одном месте, но создавать по-разному.

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

Тогда я ввожу третий класс:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class A { };
 
template <int i_value, char c_value>
class B: public A {
  public:
    inline static const int i = i_value;
    inline static const char c = c_value;
};
 
class X: public B<4, 'r'> { };
class Y: public B<6, 'g'> { };
 
int main() {
    std::cout << X().i + Y().i;
}
На простых типах это работает. Как дело касается достаточно сложных,
да даже стандартных, то компилятор обижается:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class A { };
 
template <std::string s_value>
class B: public A {
  public:
    inline static const std::string s = s_value;
};
 
class X: public B<std::string("X")> { };
class Y: public B<std::string("Y")> { };
 
int main() {
    std::cout << X().s + Y().s;
}
Уверен, что не только я сталкиваюсь с этой проблемой.
Как лучше всего поступить, если я всё-таки не хочу дублировать
декларации статических данных в каждом наследнике?

Вернуться к обсуждению:
Как правильно группировать статические данные, создаваемые по-разному? C++
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.08.2018, 03:09
Готовые ответы и решения:

Как группировать столбцы правильно?
Люди, здравствуйте. Как группировать столбцы (да и строки). Вот, мне надо сделать в диапазоне...

Как правильно группировать и разбить такую строку?
как правильно группировать и развить такую строку. пример как может выглядеть строка....

Как правильно инициализировать статические члены класса?
Я новичок и заранее прошу прощение за тупые вопросы. Имеются два класса: Solution и Pool. Pool...

Как правильно инициализировать статические поля класса
Здравствуйте, уважаемые форумчане! Столкнулся с проблемой, решение нашел, но идею еще нужно...

11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.08.2018, 03:09

Как правильно объявлять и использовать статические переменные в Lazarus
Эта тема уже обсуждалась применительно к Delphi...

Как правильно объявлять статические константные объекты в классе?
В классе надо объявить статичные константные строки. Типа class A { public: static const...

Как записать в массив данные из *.TXT и и правильно рассортировать данные по ячейкам массива?
файл index.php &lt;?php $site = (file('text.txt')); в файле text.txt находится: xxxxxx.ru...

Статические данные класса
Здравствуйте. Подскажите, почему при создании класса Date не происходит бесконечного вызова...

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