构造函数未初始化嵌套 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);