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

How to initialize members in nested class? C++

本文关键字:初始化 成员 嵌套      更新时间:2023-10-16

我在班级内部初始化课堂成员时遇到问题。假设我想将直径,宽度和音量设置为1,就像我将x设置为x

一样
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 } {}

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

实时演示

您的类声明嵌套类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) {}
};