接口:
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;
}
完整的错误消息为:
体系结构x86_64的未定义符号:“control::RMKeyControl::SM_Function_List",引用自:rm_KeyControl::AddKeyAction(char,std::__1::function)中的:control::RMKeyControl::AddKeyAction(char,std::__1::function)。o ld:找不到体系结构x86_64的符号clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
这似乎是Xcode4的一个标准链接器错误,但它的发生似乎有各种各样的原因,而且它从来没有详细说明。这个错误似乎表明存在不能在x86_64体系结构上工作的二进制指令,但是在这种情况下这是没有意义的。为什么我会出现这个错误?
编辑:我忘了提到
静态成员只是声明。在实现/源文件中定义它,如-
// include interface header and then do -
map<char, function<char(char)>> rmKeyControl::sm_function_list;