class class1
{
private:
class1() = delete;
public:
class1(int a) {}
};
class class2
{
class1 obj;
};
以上编译VS2015更新3.我正在创建一个也被删除的私有构造函数。其中一个应该已经创建了一条错误消息。我在这里缺少什么?
答案 0 :(得分:8)
我正在创建一个也被删除的私有构造函数。
没错。
其中一个应该已经创建了一条错误消息。
不。
为什么我可以在C ++中调用已删除的私有构造函数?
你不能,而你没有。
我在这里缺少什么?
致电。
这个程序中没有任何东西试图实例化任何东西,所以没有什么可失败的。
现在尝试以下任一方法:
int main()
{
class1 obj;
}
//----
int main()
{
class2 obj;
}
......看着火花飞扬。
答案 1 :(得分:0)
你在这里忘记的是,类是对象的蓝图。当您使用class2
成员创建class1
时,您实际上并没有调用它。它只是一个蓝图,而不是实际的运行代码。如果您尝试实例化class2
,则应该收到错误。