インターフェース:
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"、参照元: control::rmKeyControl::addKeyAction(char, std::__1::function) in rm_KeyControl.old: symbol(s) not found forアーキテクチャ x86_64 clang: エラー: リンカー コマンドが終了コード 1 で失敗しました (呼び出しを表示するには -v を使用します)
これは、Xcode 4 の標準的なリンカ エラーのようですが、あらゆる種類の理由で発生するようであり、詳しく説明することはありません。このエラーは、x86_64 アーキテクチャでは機能しないバイナリ命令が存在することを示しているようですが、このコンテキストでは意味がありません。このエラーが発生するのはなぜですか?
編集:rmKeyControl
それが namespaceにあることを忘れていましたcontrol
。using namespace control;
あなたはそれを見ることができませんが、私は実装しています。