0

次の部分的なコードを検討してください。

namespace Util {
    template <class T>
    class SimpleSingleton
    {
    public:
        static T& getOne() {
            if (instance == NULL)
                instance = new T();
            return *instance;
        }
    private:
        static T* instance;
        // ...
    };
    T *Singleton<T>::instance = NULL;
}
class A
{
    friend class Util::Singleton<A>;
    //...
private:
    A() {};
    //...
};
typedef Util::Singleton<A> SingletonA;

void main()
{
    A a = SingletonA::Instance(); // c2248: 'A::A' : cannot access private member declared in class 'A'
}

私はここで何が間違っているのですか?

4

1 に答える 1

3

変化する

A a = SingletonA::Instance();

A& a = SingletonA::Instance();

記述されているように、コードはオブジェクトをコピーしようとしますが、コピーコンストラクターはプライベートです。

于 2013-01-29T17:20:28.130 に答える