3尝试使用 ICC 编译下面的代码会返回此错误:错误 #453:受保护的函数“A::A()”(在第 10 行声明)无法通过“A”指针或对象访问。
class A
{
protected:
constexpr A() = default;
~A() = default;
A(const A&) = delete;
};
class B
: protected A
{
public:
B() = default;
};
int main()
{
B b;
}
我发现了 3 种奇怪的方法来使其可编译:
- 公开 A 的 ctor
- 删除 A 的已删除副本 ctor
- 替换“=默认;” 通过 A 的 ctor 中的“{}”
我的意思是,为什么h..?
谢谢您的回答 :)