构造函数未初始化嵌套 class 的成员
Member of nested class isn't being initialized by the constructor
我有两个 classes,Outer 和 Inner。外部不包含数据成员。 Inner 包含一个数据成员 inner1_。当我调用外部的构造函数时,我创建了 class 内部的一个实例,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_
,这掩盖了 class 变量。您可能想要调整矢量的大小。这是调整向量大小的方法:
inner1_.resize(n);
我有两个 classes,Outer 和 Inner。外部不包含数据成员。 Inner 包含一个数据成员 inner1_。当我调用外部的构造函数时,我创建了 class 内部的一个实例,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_
,这掩盖了 class 变量。您可能想要调整矢量的大小。这是调整向量大小的方法:
inner1_.resize(n);