代码之家  ›  专栏  ›  技术社区  ›  RainingChain

以私有类为参数的公共函数

  •  3
  • RainingChain  · 技术社区  · 7 年前

    假设我有这个代码:

    class MyClass {
    private:    
        class NestedPrivClass {};
    public:
         MyClass(NestedPrivClass){}
    };
    

    MyClass 通过调用公共构造函数?

    1 回复  |  直到 7 年前
        1
  •  6
  •   NathanOliver    7 年前

    不,这不应该是一个错误。名称是私有的并不意味着它是无效类型。例如,如果我们添加了一个公共静态函数,该函数返回 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};
    }