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

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

Войти
Регистрация
Восстановить пароль
 
[progeR]
30 / 8 / 0
Регистрация: 20.08.2011
Сообщений: 601
#1

Инициализация статического члена из шаблонного класса - C++

05.09.2016, 10:27. Просмотров 121. Ответов 3
Метки нет (Все метки)

Добрый день.
Есть код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
template<int test>
class Test
{
    template<int a>
    struct Inner
    {
        static bool value;
    };
 
    using InnerA = Inner<100500>;
};
 
template<int test>
bool Test<test>::InnerA::value = true;
Нужно инициализировать неконстантный статический член value.
В ответ на это ошибка:
Код
specializing member 'Test<test>::Inner<100500>::value' requires 'template<>' syntax
Так тоже писал:
C++
1
2
3
template<int test>
template<>
bool Test::InnerA::value = true;
Результата нет. Что делать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2016, 10:27     Инициализация статического члена из шаблонного класса
Посмотрите здесь:

Инициализация статического массива C++
C++ Инициализация константного статического объекта - члена класса
C++ Инициализация константы-члена класса
C++ По поводу статического члена класса и рекурсии
C++ Определение типа члена шаблонного класса
Инициализация статического члена std::vector в шаблонном классе C++
C++ Инициализация static члена класса
Инициализация константного члена класса с проверкой значения C++
Инициализация переменной члена класса C++
Ошибка компиляции при инициализации статического члена в классе C++
Инициализация статического поля C++
Инициализация статического массива C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
notAll
376 / 97 / 21
Регистрация: 27.05.2016
Сообщений: 244
Завершенные тесты: 2
05.09.2016, 10:45     Инициализация статического члена из шаблонного класса #2
C++
1
2
3
template<int test>
template <int a>
bool Test<test>::Inner<a>::value = true;
[progeR]
30 / 8 / 0
Регистрация: 20.08.2011
Сообщений: 601
05.09.2016, 11:15  [ТС]     Инициализация статического члена из шаблонного класса #3
Да, сработало.
Однако если усложнить пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
template<int test>
class Test
{
    enum TestEnum
    {
        First,
        Second,
        Third
    };
 
    template<TestEnum index>
    struct Inner
    {
        static bool value;
    };
 
    using InnerA = Inner<100500>;
};
 
template<int test>
template<typename Test<test>::TestEnum index>
bool Test<test>::Inner<index>::value = true;
и сделать по аналогии, то тут появляется другая ошибка:
Код
template definition of non-template 'bool Test<test>::Inner<index>::value'
 bool Test<test>::Inner<index>::value = true;
                                ^
HelicopterK52
648 / 191 / 28
Регистрация: 27.07.2016
Сообщений: 475
Завершенные тесты: 1
05.09.2016, 12:40     Инициализация статического члена из шаблонного класса #4
Цитата Сообщение от [progeR] Посмотреть сообщение
и сделать по аналогии
Это не аналогия. Здесь уже перечисление.
Например, можете вынести его из класса, чтобы заработало.

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
enum TestEnum
{
     First,
     Second,
    Third
};
 
template<int test>
class Test
{
 
 
    template<TestEnum index>
    struct Inner
    {
        static bool value;
    };
 
    using InnerA = Inner<First>;
};
 
 
 
 
template<int test>
template<TestEnum index>
bool Test<test>::Inner<index>::value = true;
Но никто не знает, что Вы там хотите сделать.
Yandex
Объявления
05.09.2016, 12:40     Инициализация статического члена из шаблонного класса
Ответ Создать тему
Опции темы

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