如何初始化嵌套类中的成员? C ++

时间:2019-05-14 20:06:18

标签: 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 } {}

2 个答案:

答案 0 :(得分:2)

您的类声明了嵌套类wheelsengine,但实际上不包含类型wheels或类型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) {}
};

答案 1 :(得分:2)

wheelsengine只是类型,在您的car结构中没有这些类型的数据成员,唯一的数据成员是x

我认为您可能打算这样做:

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

car::car() : x(1), w{1, 1}, e{1} {}

car::car(wheels w, engine e) : x(1), w(w), e(e) {}

Live Demo