C++ 如何访问公共静态成员变量
我有我的头文件,在其中我有选择,你可以看到它的公共静态成员C++ 如何访问公共静态成员变量,c++,static,singleton,C++,Static,Singleton,我有我的头文件,在其中我有选择,你可以看到它的公共静态成员 #ifndef SHAREDDATA_H_ #define SHAREDDATA_H_ #include "cocos2d.h" #include "GameTrinkets.h" using namespace std; class SharedData{ private: //... //Instance of the singleton static SharedData* m_mySinglet
#ifndef SHAREDDATA_H_
#define SHAREDDATA_H_
#include "cocos2d.h"
#include "GameTrinkets.h"
using namespace std;
class SharedData{
private:
//...
//Instance of the singleton
static SharedData* m_mySingleton;
public:
//Get instance of singleton
static SharedData* sharedGameManager();
static int selection;
};
#endif /* SHAREDDATA_H_ */
我尝试访问的地方是:
我试图通过名称空间设置选择,因为这似乎是正确的方法
我试着通过单亲家庭的例子,但是运气不好
所以我尝试的代码
#include "GameScene.h"
#include "GameTrinkets.h"
#include "SharedData.h"
#include <time.h>
void GameScene::mainSpriteSelection(int selection){
//1
SharedData::selection=3;
//2
SharedData::sharedGameManager()->selection=selection;
}
我得到的错误是:
[armeabi]共享库:libcocos2dcpp.so
jni/./../Classes/GameScene.cpp:41:错误:未定义对“SharedData::selection”的引用。错误消息告诉您需要定义静态变量选择 在GameScene.cpp文件中定义它
int GameScene::selection = 0;
必须在.cpp中将类外的静态变量定义为 最简单的例子:
#include <iostream>
using namespace std;
struct Foo
{
static int member;
};
int Foo::member; // definition here
int main()
{
cout << Foo::member << endl;
}
否则会出现链接器错误在C++中,当声明变量为静态时,必须在实现文件中重新定义它,然后才能使用该变量。比如说,
//in the header file.
class foo{
public:
static int bar;
};
//in the implementation file
int foo::bar // optional initialisation.
//in the main program
//header files
int main(){
foo::bar = desired_initialisation_value; //no problem
}
可能重复的
//in the header file.
class foo{
public:
static int bar;
};
//in the implementation file
int foo::bar // optional initialisation.
//in the main program
//header files
int main(){
foo::bar = desired_initialisation_value; //no problem
}