5


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)
4

1 に答える 1