С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

05.09.2016, 10:27. Просмотров 166. Ответов 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;
Результата нет. Что делать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2016, 10:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Инициализация статического члена из шаблонного класса (C++):

Инициализация константного статического объекта - члена класса - C++
Здравствуйте, у меня возникла проблема с инициализацией статического объекта, который является членом класса. Этот объект должен быть...

Инициализация статического члена std::vector в шаблонном классе - C++
есть класс myclass , владеющий классом struct template&lt;class T&gt; class myclass { struct mystruct {}; public: static...

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

По поводу статического члена класса и рекурсии - C++
Привет! Тут вот небольшой вопросик по поводу. Читаю книжку Страуструпа нашего и возник вопросик. ...

Инициализация константы-члена класса - C++
Все привет! Возникла такая проблема: есть double константа-член класса, объявленная в секции protected. Проблема в том, что я не знаю как...

Инициализация static члена класса - C++
Добрый вечер! Есть класс, в нём в private реализован ещё один + это всё шаблоны. Во вложенном классе есть static указатель на переменную...

3
notAll
430 / 152 / 36
Регистрация: 27.05.2016
Сообщений: 408
Завершенные тесты: 2
05.09.2016, 10:45 #2
C++
1
2
3
template<int test>
template <int a>
bool Test<test>::Inner<a>::value = true;
0
[progeR]
30 / 8 / 0
Регистрация: 20.08.2011
Сообщений: 610
Завершенные тесты: 1
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;
                                ^
0
HelicopterK52
682 / 207 / 28
Регистрация: 27.07.2016
Сообщений: 474
Завершенные тесты: 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;
Но никто не знает, что Вы там хотите сделать.
0
05.09.2016, 12:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2016, 12:40
Привет! Вот еще темы с ответами:

Инициализация переменной члена класса - C++
Добрый день. Не могу никак понять, что делаю неверно при использовании переменной класса. Не понимаю как переменную необходимо...

Инициализация константного члена класса с проверкой значения - C++
Допустим есть класс константным членом class a{ const int i; public: a(int ii):i(ii){}; } Можно ли как-нибудь...

Как корректно передать в метод шаблонного класса объект шаблонного класса в качестве параметра? - C++
header.h template &lt;class T&gt; class MyVector { public: void swap(MyVector&lt;T&gt;Vector); } template &lt;class T&gt; void...

Вызов метода у шаблонного поля, шаблонного класса - C++
Пытаюсь разобраться с шаблонами- задача создать шаблонный класс, у которого есть шаблонное поле. и затем вызывать метод у этого поля. ...


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

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

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