Я реализовал синглтон в качестве встроенной переменной статической статической члена < /code>, но была проблема. (с шаблоном) < /p>
Я использую VS2022 и используя C ++ 17. < /li>
ниже кода Compiler (ошибка Compiler C2512)
msdinn error Compiler C2512)
mscodin riemdlin /> < /ul>
#include
template
class A
{
public:
A() = default;
~A();
void print()
{
printf("Hello");
}
inline static A& GetInstace()
{
return _singleton;
}
private:
inline static A _singleton;
T _A{};
};
//template
//A A::_singleton; //This is Fine!
int main()
{
A& singletonei1 = A::GetInstace();
A& singletonef1 = A::GetInstace();
A& singletoned1 = A::GetInstace();
printf("int singletone : %p | float singletone : %p | double singletone : %p\n", &singletonei1, &singletonef1, &singletoned1);
return 0;
}
< /code>
Я думаю, что нет никаких причин компилятор не может найти конструктор. Beacuse, как я знаю, шаблон генерирует код во время компиляции (время компиляции) и статические переменные, сгенерированные во время выполнения (до основного запуска).
Подробнее здесь: https://stackoverflow.com/questions/794 ... h-template