0

界面:

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 ld 中的 control::rmKeyControl::addKeyAction(char, std::__1::function):未找到符号架构 x86_64 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

这似乎是 Xcode 4 的标准链接器错误,但它似乎由于各种原因而发生,并且从未详细说明。此错误似乎表明存在不适用于 x86_64 架构的二进制指令,但这在这种情况下没有意义。为什么我会收到此错误?

编辑:我忘了提到那rmKeyControl是在 namespace control。我using namespace control;在执行中,虽然你看不到它。

4

1 回答 1

4

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

// include interface header and then do -
map<char, function<char(char)>> rmKeyControl::sm_function_list;
于 2012-07-20T20:16:07.187 回答