构造函数未初始化嵌套类的成员



我有两个类,Outer和Inner。外部不包含任何数据成员。内部包含一个数据成员inner1_。当我调用outer的构造函数时,我会创建类Inner的一个实例inner1。当调用inner1的构造函数时,其数据成员inner1_应该是长度为n的向量。然而,在构造inner1之后,我发现其数据成员的长度为0。为什么我会有这种意想不到的行为?

#include <iostream>
#include <vector>
class Outer {
public:
Outer(int n) {
Inner1 inner1{n};
inner1.printsize();
}
private:
class Inner1 {
public:
Inner1(int n) {
std::vector<double> inner1_(n);
}
void printsize() {
std::cout << inner1_.size();
}
std::vector<double> inner1_;
};
};
int main() {
Outer test(7);
return 0;
}

您在ctor中重新声明了inner1_,这使类变量黯然失色。您可能想要调整矢量的大小。这就是调整矢量大小的方法:

inner1_.resize(n);

最新更新