如何在嵌套类中初始化成员?C
How to initialize members in nested class? C++
我在班级内部初始化课堂成员时遇到问题。假设我想将直径,宽度和音量设置为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 } {}
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) {}
实时演示
您的类声明嵌套类wheels
和engine
,但实际上不包含类型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) {}
};
相关文章:
- 为什么在C++中首先初始化成员类
- 是否可以防止省略聚合初始化成员?
- 正在复制具有未初始化成员的结构
- 使用大括号或括号初始化成员变量
- C++结构:强制初始化成员?
- C++中未初始化成员布尔变量的默认值是多少?
- 使用默认值初始化成员引用
- 在构造函数中初始化成员时,是否应该在成员上使用 std::move?
- C++使用 { } 初始化成员变量
- 如何根据构造函数参数使用超类类型初始化成员变量?
- OpenGL C++:VBO 的结构包装器不会初始化成员
- 有没有办法在Brace中初始化成员
- 从现有 istream 或类本身创建的 istream 初始化成员 istream
- 从其后声明的另一个成员数据初始化成员数据是否为未定义行为
- 通常应用方法,使用带有构造函数委托的 SFINAE 通过类模板的构造函数初始化成员
- 如何在嵌套类中初始化成员?C
- 是否可以在构造函数主体中初始化成员变量,而不是初始值设定项列表
- 编译器错误,因为构造函数必须显式初始化成员
- 如何使用成员函数初始化成员函数指针
- C 如何使用隐藏的默认构造函数初始化成员