使用多个返回值初始化多个成员
Initialization of multiple members using multiple return value
从 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;
};
我知道,由于语法的原因,这不起作用。我也知道我可以将所有值存储在X
中的适当std::pair
成员中,并制作使丑陋的std::get<N> ()
语法过载的 getter,但是有什么方法可以用单个init()
函数初始化多个成员?由于这些成员是常量,因此我无法在构造函数的主体中执行此操作。
不使用结构化绑定,但你可以让一个私有构造函数采用 std::p air 并初始化常量。然后,将默认构造函数委托给该构造函数,其中包含函数的结果。
相关文章:
- C++成员初始化
- c++构造函数成员初始化:传递参数
- C++正确的指针成员初始化
- 将另一个类的对象传递到当前类C++的构造函数中(不是成员初始化)
- WinLamb 错误:成员初始化非法
- 使用其他成员初始化结构的成员?
- C++模板类静态成员初始化
- 解释了构造函数成员初始化列表
- 如何在成员初始化列表中声明共享指针
- C++入门5版:使用get成员初始化另一个与shared_ptr无关的对象
- C++11 默认类成员初始化与初始值设定项列表同时
- 调用非默认构造函数作为成员初始化
- C++模板成员初始化:用右值移动构造,但用左值移动引用
- 类成员初始化C++
- 在成员初始化列表中,我可以创建对列表中不在列表中的成员变量的引用
- C :(不重复)积分静态成员初始化(不仅是声明!),导致链接器错误,原因
- 如何调用成员初始化器列表中参考成员的构造函数
- C 构造函数采用成员初始化器
- 与其他静态const成员初始化静态常量成员
- 静态内联成员初始化顺序