【发布时间】:2015-08-01 08:54:28
【问题描述】:
我在尝试访问指定为模板参数的派生类的私有构造函数时遇到了一些困难。我希望指定friend T 可以解决问题,但不幸的是它没有效果。
template <typename T>
class Creator
{
public:
static void Create()
{
instance = new T;
}
private:
static T* instance;
friend T;
};
template <typename T>
T* Creator<T>::instance(nullptr);
class Test
{
private:
Test() {}
};
创建尝试:
int main()
{
Creator<Test>::Create();
}
我得到的错误是:
错误 C2248“Derived::Derived”:无法访问在“Derived”类中声明的私有成员
请问有什么办法可以解决这个问题吗?
【问题讨论】: