问题描述
我有两个班级,外层和内层。外部不包含任何数据成员。内部包含一个数据成员inner1_。当我调用external的构造函数时,我创建了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;
}
解决方法
您已经在inner1_
中重新声明了ctor
,这使class变量蒙上了阴影。您可能要调整向量的大小。这是调整向量大小的方法:
inner1_.resize(n);