有没有办法让(MSVC)编译器生成以下ctor'在初始化程序列表模式模式下面,它采用成员减速的顺序而不是(或者除了)默认构造函数?
struct Foo{
float a;
float b;
float c;
Foo(float _a, float _b, float _c) : a(_a), b(_b), c(_c) {}
};
答案 0 :(得分:5)
它已经存在,因为您的示例是POD aggregate类型。
struct Foo{
float a;
float b;
float c;
};
因此,您可以使用类似
的内容初始化Foo
Foo f{1.0f, 2.0f, 3.0f};
与手动定义的构造函数
的语法相同答案 1 :(得分:0)
您可以使用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);}
};
但我认为这比编写构造函数更糟糕。