0

アプリケーションの存続期間を通じて、クラスの単一のオブジェクトを使用する必要があるとします。BlackBerry 10では、プログラム内のどこでも使用できるグローバルオブジェクトを宣言できますか?

4

1 に答える 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 に答える