30 / 8 / 2
Регистрация: 20.08.2011
Сообщений: 615
1

Ошибка undefined reference для static constexpr переменной

24.09.2017, 14:11. Показов 2510. Ответов 3
Метки нет (Все метки)

Добрый день. Есть код:
C++ (Qt)
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
template<typename K, typename V>
struct Pair
{
    K key;
    V value;
};
 
struct Test
{
    // какие-то методы...
 
    template<int function>
    struct Map
    {
        static constexpr Pair<bool, int> ALT = {true, function};
    };
};
 
using MyMap = Test::Map<543>;
 
template<> constexpr Pair<bool, int> MyMap::ALT;
 
void test(const Pair<bool, int> &value)
{
    // тут что-то...
}
 
int main()
{
    test(MyMap::ALT);
}
Компилятор в ответ на это бессовестно отбрехивается:
Код
undefined reference to `Test::Map<543>::ALT'
Не могу понять, что ему не так и как это исправить. Помогите.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.09.2017, 14:11
Ответы с готовыми решениями:

Ошибка сборки static constexpr int x[] = {.};
printf('Hello World!\n'); Хочу определить в классе статический массив. Пишу, к примеру: class...

Странная ошибка: [Linker error] undefined reference to `__dyn_tls_init_callback' [Linker error] undefined reference to ld returned 1 exit status
Здравствуйте. Вот недавно начал изучать книгу &quot;С++ для чайников&quot; Стефан Р. Девис 4-е издание. И...

Static Qt5 сборка с CMake и mingw64 - undefined reference to
Всем привет! Нужно создать приложение для windows из под linux. Всё должно быть в одном exe...

Ошибка: Cannot make a static reference to the non-static method
решил учить андроид. решил написать чат, но при создании сервера на Java по примеру на сайте у...

3
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
24.09.2017, 14:31 2
Цитата Сообщение от [progeR] Посмотреть сообщение
template<> constexpr Pair<bool, int> MyMap::ALT;
Удалить эту строку.
0
15261 / 8228 / 1993
Регистрация: 30.01.2014
Сообщений: 14,010
24.09.2017, 14:32 3
Лучший ответ Сообщение было отмечено [progeR] как решение

Решение

[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
28
29
30
31
template<typename K, typename V>
struct Pair
{
    K key;
    V value;
};
 
struct Test
{
    // какие-то методы...
 
    template<int function>
    struct Map
    {
        static constexpr Pair<bool, int> ALT = {true, function};
    };
};
 
using MyMap = Test::Map<543>;
 
template<int function> constexpr Pair<bool, int> Test::Map<function>::ALT;
 
void test(const Pair<bool, int> &value)
{
    // тут что-то...
}
 
int main()
{
    test(MyMap::ALT);
}
0
30 / 8 / 2
Регистрация: 20.08.2011
Сообщений: 615
24.09.2017, 15:06  [ТС] 4
Хм, значит надо было просто полностью повторить сигнатуру переменной...
Благо в 17й версии этим страдать не надо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.09.2017, 15:06

Ошибка undefined reference to 'sin' в функции, которая должна собирать дискретный массив для синуса
Здравствуйте. Пишу программу под МК. Кое как собрал функцию, которая должна собирать дискретный...

Ошибка undefined reference to
main.cpp #include &lt;locale&gt; #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &quot;Class.h&quot; using...

Ошибка undefined reference
Имеется программа. Представляет из себя поисковую систему. Пишу в dev-cpp. При компиляции вылезает...

Ошибка undefined reference to
Взял пример из учебника С++ изнутри (Вайнер), но при попытке скомпилировать программу, возникают...


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

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

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