Public 函数以私有 class 作为参数
Public function taking private class as parameter
假设我有这个代码:
class MyClass {
private:
class NestedPrivClass {};
public:
MyClass(NestedPrivClass){}
};
有没有办法让另一个 class 通过调用 public 构造函数来创建 MyClass
的实例?
在 public 函数中使用私有嵌套 class 作为参数不应该是编译错误吗? (因为无法调用它们。)
不,这不应该是一个错误。仅仅因为名称是私有的并不意味着它是无效的类型。例如,如果我们添加一个 public 静态函数 returns 一个 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};
}
假设我有这个代码:
class MyClass {
private:
class NestedPrivClass {};
public:
MyClass(NestedPrivClass){}
};
有没有办法让另一个 class 通过调用 public 构造函数来创建 MyClass
的实例?
在 public 函数中使用私有嵌套 class 作为参数不应该是编译错误吗? (因为无法调用它们。)
不,这不应该是一个错误。仅仅因为名称是私有的并不意味着它是无效的类型。例如,如果我们添加一个 public 静态函数 returns 一个 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};
}