map<string, int>
次のように、プログラムでの静的マップを初期化しようとしています:
testApp.h
class testApp(){
public:
void setup();
void update();
void renew();
static map<string, int> _someMap;
};
testApp.cpp
testApp::setup(){
_someMap["something"] = 1;
_someMap["something2"] = 2;
cout<<_someMap["something"]<<"\n";
}
boost
このマップの短い使用には使用したくなく、コードにソース依存関係を追加します。C++11
クラスはフレームワークのクラスであるため、私はオンになっておらず、プログラムにコンストラクターがありません。私は Xcode を使用しており、上記を で実行すると.cpp
、次のエラーが発生します。
Undefined symbols for architecture i386:
"testApp::mapppp", referenced from:
testApp::setup() in testApp.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
-- >さらに、私のマップが非公開であるとしましょう。そのために、クラスでこれを試してみました。
...
private:
static someVariable;
static void someFunction();
.cpp
testApp::setup(){
someFunction();
}
エラー:
Undefined symbols for architecture i386:
"testApp::_someMap", referenced from:
testApp::someFunction() in testApp.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)