假设我们必须在应用程序的整个生命周期中使用类的单个对象。在BlackBerry 10中,是否可以声明一个全局对象,可以在程序内的任何地方使用?
答案 0 :(得分:1)
你可以这样做,但更好的方法可能是使用一个设计为单身的类:
Singleton.hpp
class Singleton {
private:
Singleton();
public:
virtual ~Singleton();
static Singleton &instance();
int getMemberField() { return m_memberField; }
void setMemberField(int mf) { m_memberField = mf; }
private:
static Singleton *p_instance;
int m_memberField;
};
Singleton.cpp
Singleton* Singleton::p_instance = NULL;
Singleton::Singleton() {
p_instance = this;
m_memberField = 0;
}
Singleton::~Singleton() {
p_instance = NULL;
}
Singleton& Singleton::instance() {
if (p_instance == NULL) {
p_instance = new Singleton();
}
return *p_instance;
}
在应用程序代码中
Singleton::instance().setMemberField(25);
Singleton::instance().getMemberField();
真正的好处是单身人士会照顾自己的全局指针。