gpt4 book ai didi

c++ - 当它们被定义为静态变量作为类成员时如何初始化STL映射

转载 作者:太空宇宙 更新时间:2023-11-04 16:24:30 25 4
gpt4 key购买 nike

对于以下代码,我收到链接器错误。我想知道如何初始化 STL map

#include <iostream>
#include <map>
#include <string>

class Test {
public:
Test() {
}
static void setSerializer(void* fnptr, std::string className) {
m_registry.insert(std::make_pair(className, fnptr));
}
static void* getSerializer(std::string className) {
return m_registry.find(className)->second;
}
private:
static std::map<std::string, void*> m_registry;
};

void fn() {
}

int main() {
Test::setSerializer(&fn,"abc");
return 0;
}

最佳答案

您需要在类实现中定义您的静态变量——就像您对extern C++ 变量所做的那样。仅仅在类里面宣布它是不够的!为此,请将以下代码放入 .cpp 文件中:

std::map<std::string, void*> Test::m_registry;

关于c++ - 当它们被定义为静态变量作为类成员时如何初始化STL映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13411923/

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