编译器生成构造函数来初始化成员

Compiler generated constructor to initialise members

本文关键字:初始化 成员 构造函数 编译器      更新时间:2023-10-16

是否有一种方法可以让(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);}
};

但是我认为这比写构造函数更糟糕。