首页 > 解决方案 > 如何初始化嵌套类中的成员?C++

问题描述

我在类内部初始化类成员时遇到问题。假设我想将直径、宽度和体积设置为 1,就像我将 x 设置为 1

struct car {
    int x;
    struct wheels {
        int diameter;
        int width;
    };
    struct engine {
        int volume;
    };
    car();
    car(wheels w, engine e);
};

car::car() : x(1), wheels::diameter(1), wheels::width(1) {}

我也试过这样做,但没有运气:

car::car() : x(1), wheels{ 1,1 } {}

标签: c++

解决方案


您的类声明了嵌套类wheelsand engine,但它实际上并不包含 typewheels或 type的成员变量engine。解决这个问题很容易:

struct car {
    struct Wheels {
        int diameter;
        int width;
    };
    struct Engine {
        int volume;
    };

    int x;
    Wheels wheels;
    Engine engine;
    car() : x(1), wheels{1,1}, engine{} {}
    car(Wheels w, Engine e) : x(1), wheels(w), engine(e) {}
};

推荐阅读