Я получаю ошибку компоновки при попытке скомпилировать следующее:
У меня есть заголовок, содержащий класс: ("ах")
#pragma once
class A
{
public:
static const float a;
}
Соответствующее тело: ("a.cpp ")
#include "a.h"
const float A::a = 1.0f;
Основной файл выглядит следующим образом: (" main.cpp ")
#include "a.h"
template <class AA>
class AAA
{
public:
AAA();
};
template <class AA>
AAA<AA>::AAA()
{
auto a = AA::a;
}
int main(int argc, char* args[])
{
AAA<A> aaa;
}
Если я поместил содержимое" a.cpp "в заголовок, Я получаю ошибку «multiplyfined ...» при компиляции.
Мне удалось избавиться от проблемы, поместив содержимое «a.cpp» в заголовок и заключив все в безымянное пространство имен:
Тем не менее, я не думаю, что это лучшее решение.
Не могли бы вы предложить лучшее решение?
(PS. Я использую Visual Studio 2019версии 142 и 10.0.18362.)