gpt4 book ai didi

C++11 私有(private)默认构造函数

转载 作者:IT老高 更新时间:2023-10-28 21:52:54 33 4
gpt4 key购买 nike

以下 C++11 代码在我的 GCC 4.8 上成功编译:

struct NonStack
{
private:
NonStack() = default;
public:
static NonStack* Create(){
return new NonStack;
}
};
NonStack a;

int main() { }

但是以下给出了编译错误:

struct NonStack
{
private:
NonStack(){}
};

NonStack a;

int main() { }

为什么第一个成功了?私有(private)默认构造函数不应该禁止通过 NonStack a; 创建对象吗?

最佳答案

这是 gcc 错误 54812 ,编译器不尊重显式默认特殊成员函数的访问说明符。错误 56429 ,它被标记为之前的一个拷贝,它的测试用例与问题中的示例几乎相同。

解决办法是升级到gcc4.9,问题就解决了。或者为构造函数创建一个空主体,而不是像第二个示例中那样显式默认它。

关于C++11 私有(private)默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25716579/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com