gpt4 book ai didi

c++ - 体系结构 x86_64 : 的 undefined symbol

转载 作者:行者123 更新时间:2023-11-27 23:22:53 25 4
gpt4 key购买 nike

界面:

class rmKeyControl {
static map<char, function<char(char)>> sm_function_list;
public:
static bool addKeyAction(char, function<char(char)>);
};

实现:

bool rmKeyControl::addKeyAction(char key, function<char(char)> func) {
if (!sm_function_list.count(key)) {
sm_function_list.insert(pair<char, function<char(char)>>(key, func));
return true;
} return false;
}

完整的错误信息是:

Undefined symbols for architecture x86_64: "control::rmKeyControl::sm_function_list", referenced from: control::rmKeyControl::addKeyAction(char, std::__1::function) in rm_KeyControl.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

这似乎是 Xcode 4 的标准链接器错误,但它似乎出于各种原因而发生,而且从未详细说明。此错误似乎表明存在不适用于 x86_64 体系结构的二进制指令,但在此上下文中没有意义。为什么会出现此错误?

编辑: 我忘了提到 rmKeyControl 在命名空间 control 中。我正在 using namespace control; 在实现中,尽管您看不到它。

最佳答案

静态成员只是声明。在实现/源文件中定义它,如-

// include interface header and then do -
map<char, function<char(char)>> rmKeyControl::sm_function_list;

关于c++ - 体系结构 x86_64 : 的 undefined symbol ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11586353/

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