アプリケーションの存続期間を通じて、クラスの単一のオブジェクトを使用する必要があるとします。BlackBerry 10では、プログラム内のどこでも使用できるグローバルオブジェクトを宣言できますか?
質問する
305 次
1 に答える
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();
これの本当の利点は、シングルトンがそれ自体のグローバルポインタの世話をすることです。
于 2013-01-23T02:27:09.183 に答える