编译器生成构造函数来初始化成员
Compiler generated constructor to initialise members
是否有一种方法可以让(MSVC)编译器根据下面的初始化列表模式(按成员减速的顺序接受参数,而不是(或)默认构造函数)生成以下tor ?
struct Foo{
float a;
float b;
float c;
Foo(float _a, float _b, float _c) : a(_a), b(_b), c(_c) {}
};
它已经做到了,因为您的示例是POD聚合类型。
struct Foo{
float a;
float b;
float c;
};
你可以用
这样初始化Foo
Foo f{1.0f, 2.0f, 3.0f};
与您手动定义的构造函数
的语法相同演示工作您可以使用std::tuple
struct Foo : private std::tuple<float, float, float>{
using std::tuple<float, float, float>::tuple;
const float& a() const {std::get<0>(*this);}
float& a() {std::get<0>(*this);}
const float& b() const {std::get<1>(*this);}
float& b() {std::get<1>(*this);}
const float& c() const {std::get<2>(*this);}
float& c() {std::get<2>(*this);}
};
但是我认为这比写构造函数更糟糕。
相关文章:
- 为什么在C++中首先初始化成员类
- 是否可以防止省略聚合初始化成员?
- 正在复制具有未初始化成员的结构
- 使用大括号或括号初始化成员变量
- C++结构:强制初始化成员?
- C++中未初始化成员布尔变量的默认值是多少?
- 使用默认值初始化成员引用
- 在构造函数中初始化成员时,是否应该在成员上使用 std::move?
- C++使用 { } 初始化成员变量
- 如何根据构造函数参数使用超类类型初始化成员变量?
- OpenGL C++:VBO 的结构包装器不会初始化成员
- 有没有办法在Brace中初始化成员
- 从现有 istream 或类本身创建的 istream 初始化成员 istream
- 从其后声明的另一个成员数据初始化成员数据是否为未定义行为
- 通常应用方法,使用带有构造函数委托的 SFINAE 通过类模板的构造函数初始化成员
- 如何在嵌套类中初始化成员?C
- 是否可以在构造函数主体中初始化成员变量,而不是初始值设定项列表
- 编译器错误,因为构造函数必须显式初始化成员
- 如何使用成员函数初始化成员函数指针
- C 如何使用隐藏的默认构造函数初始化成员