我写了一个这样的课:
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):data {t} {}
test.cpp:5:14:错误:在此范围内 context Base():con {5} {}
所以我的问题是为什么我的代码不起作用。任何建议都非常感谢!
答案 0 :(得分:0)
问题是subClass不提供公共构造函数,因此提供一个
class Base {
public:
Base():con{5} {}
private:
class subClass {
int data;
public:
subClass(int t):data(t) {}
};
vector<subClass> con;
};
答案 1 :(得分:0)
问题在于声明
Base():con{5} {}
尝试使用值con
构建的subClass
实例初始化向量5
。
然而相应的构造函数
subClass(int t):data(t) {}
目前私有。
尽管subClass
是Base
的私人成员,但通常的可见性规则适用。 Base
除非是公开的,否则无法看到subClass::subClass(int)
:
class subClass {
public:
subClass(int t): data(t) {}
private:
int data;
}