假设我有这个代码:
class MyClass { private: class NestedPrivClass {}; public: MyClass(NestedPrivClass){} };
MyClass 通过调用公共构造函数?
MyClass
不,这不应该是一个错误。名称是私有的并不意味着它是无效类型。例如,如果我们添加了一个公共静态函数,该函数返回 NestedPrivClass
NestedPrivClass
class MyClass { private: class NestedPrivClass {}; public: MyClass(NestedPrivClass){} static NestedPrivClass getNestedPrivClass() { return NestedPrivClass{}; } };
然后我们可以构造一个 MyClass 喜欢
int main() { auto private_name = MyClass::getNestedPrivClass(); MyClass foo{private_name}; }