接口:
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.o中的control :: rmKeyControl :: addKeyAction(char,std :: __ 1 :: function) ld:找不到架构x86_64的符号 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
这似乎是Xcode 4的标准链接器错误,但它似乎出于各种各样的原因,并且它从未详细说明。此错误似乎表明存在无法在x86_64体系结构上运行的二进制指令,但在此上下文中没有意义。为什么我会收到此错误?
修改:我忘了提及rmKeyControl
位于名称空间control
中。我在实施中using namespace control;
,虽然你看不到它。
答案 0 :(得分:4)
静态成员只是声明。在实现/源文件中定义它,如 -
// include interface header and then do -
map<char, function<char(char)>> rmKeyControl::sm_function_list;