我写了这样的课:

class Base {
public:
    Base():con{5} {}
private:
    class subClass {
        subClass(int t):data{t} {}
        int data;
    };
    vector<subClass> con;
};


在这个类中,我希望有一个容器成员来存储其私有子类,因为我认为con具有访问权限和新的subClass权限,但是结果编译器告诉我:


  test.cpp:8:3:错误:“ Base :: subClass :: subClass(int)”是私有的:
  subClass(int t):数据{t} {}
  test.cpp:5:14:错误:在此范围内
  上下文Base():con {5} {}


所以我的问题是为什么我的代码不起作用。任何建议,高度赞赏!

最佳答案

问题是子类不提供公共构造函数,因此请提供一个

class Base {
public:
    Base():con{5} {}
private:
    class subClass {
        int data;
    public:
        subClass(int t):data(t) {}
    };
    vector<subClass> con;
};

关于c++ - 如何使容器成为私有(private)子类的成员?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36611658/

10-13 03:45