次の部分的なコードを検討してください。
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'
}
私はここで何が間違っているのですか?