自从C++17版本以后,我可以做到:
std::pair<int, double> init () {
return std::make_pair (1, 1.2);
}
void foo () {
const auto [x, y] = init ();
std::cout << x << " " << y << "\n";
}
这很酷,但有没有办法一次性初始化多个成员变量呢? 我的意思是:
struct X {
X () : [x, y] {read_from_file_all_values ()} {}
std::pair<int, double> read_from_file_all_values () {
// open file, read all values, return all
return std::make_pair (1, 1.2);
}
const int x;
const double y;
};
我知道,这样做不起作用是因为语法的问题。我也知道我可以将所有值存储在适当的
std::pair
成员内,制作重载丑陋的std::get<N>()
语法的getter,但是有没有办法使用单个init()
函数初始化多个成员?由于这些成员是const,所以我不能在构造函数体中执行此操作。
x
和y
但是它们的初始化由一个单一函数完成。 - Artur Pyszczuk