gpt4 book ai didi

c++ - 静态模板函数访问静态类成员

转载 作者:行者123 更新时间:2023-12-03 12:49:47 26 4
gpt4 key购买 nike

我在一个类中有一个静态模板函数,需要访问同一类中的静态映射,但在尝试访问该映射时不断收到 Unresolved external 错误。有什么想法吗?

代码如下:

 class Singleton
{

private:

static std::map<size_t, Singleton*> singletons;

public:

template<typename T>
static T* Get()
{
size_t type = typeid(T).hash_code();

if (singletons[type] == nullptr)
singletons[type] = new T();

return (T*)singletons[type];
}

};

错误消息:

error LNK2001: unresolved external symbol "private: static class std::map,class std::allocator > > Singleton::singletons" (?singletons@Singleton@@0V?$map@IPAVSingleton@@U?$less@I@std@@V?$allocator@U?$pair@$$CBIPAVSingleton@@@std@@@3@@std@@A)

最佳答案

静态类成员需要在编译单元中定义和声明(在您的情况下singletons成员)

您需要在 .cpp 文件中添加此行:

std::map<size_t, Singleton*> Singleton::singletons;

关于c++ - 静态模板函数访问静态类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43325990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com