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

3
我在类内部初始化成员变量遇到了问题。 假设我想像设置 x 为 1 一样将直径(diameter)、宽度(width)和体积(volume)都设置为 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个回答

2

您的类声明了嵌套类 wheelsengine,但它实际上并不包含类型为wheelsengine的成员变量。修复这个问题非常容易:

您可以在类中添加 wheelsengine 成员变量,以确保它们与相应的嵌套类相关联。

最初的回答:

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) {}
};

2
“wheels”和“engine”只是类型,它们在你的“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) {}

演示实例


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接