0

シングルトンの疑い: グローバル空間でプライベートな静的オブジェクトにアクセスするにはどうすればよいですか? コードを以下に示します。これは完全に正常に動作します。


#include <iostream>
using namespace std;

class Singleton {
    static Singleton s;
    static void func()
    {
        cout<<"i am static function "<<endl;
    }
    int i;
    Singleton(int x) : i(x) {
    cout<<"inside Constructor"<<endl;
    }
    void operator=(Singleton&);
    Singleton(const Singleton&);
    public:

    static Singleton& getHandle() {
        return s;
    }
    int getValue() { return i; }
    void setValue(int x) { i = x; }
};

Singleton Singleton::s(47);


int main() {

    Singleton& s = Singleton::getHandle();
    cout << s.getValue() << endl;
    Singleton& s2 = Singleton::getHandle();
    s2.setValue(9);
    cout << s.getValue() << endl;
}
4

2 に答える 2

1

できません。プライベート メンバーは、コンテキストに関係なくプライベートです。クラス内以外からはアクセスできません。

あなたがしていることは、実際にはプライベートメンバーに直接アクセスすることではなく、パブリック関数を使用して参照を返し、それを使用できるようにします。関数内のコードはmain、プライベート メンバーにアクセスしませんm

于 2013-11-11T06:27:03.097 に答える