【发布时间】:2015-07-05 22:29:35
【问题描述】:
我有一定的设计策略,我的类的构造函数是私有的,只能由类的朋友构造。在朋友函数中,我正在尝试使用std::make_unique创建我的类的唯一指针,但它无法编译。我的 VC12 编译器报错
c:\program 文件 (x86)\microsoft visual studio 12.0\vc\include\memory(1639):错误 C2248:“Spam::Spam”:无法访问在“Spam”类中声明的私有成员
编译失败的相关代码如下
#include <memory>
class Spam {
public:
friend void Foo();
private:
Spam(int mem) :mem(mem) {}
int mem;
};
void Foo() {
std::unique_ptr<Spam> spam = std::make_unique<Spam>(10);
}
为什么我无法编译?
【问题讨论】:
标签: c++ c++11 friend unique-ptr