如何制作单人类BlackBerry 10

时间:2013-01-22 22:13:30

标签: c++ blackberry-10

假设我们必须在应用程序的整个生命周期中使用类的单个对象。在BlackBerry 10中,是否可以声明一个全局对象,可以在程序内的任何地方使用?

1 个答案:

答案 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();

真正的好处是单身人士会照顾自己的全局指针。