有没有办法在Brace中初始化成员
is there a way to initialize members in brace?
我有一个与某些成员定义的类交易,现在我必须用以下内容进行初始化。
DealSchedule trf_schedule;
trf_schedule.site_ = site;
trf_schedule.deal_id_ = deal_id;
trf_schedule.payment_date_ = payment_date;
trf_schedule.ccy1_ = ccy1;
trf_schedule.ccy2_ = ccy2;
有可能以
的方式写得很好DealSchedule trf_schedule
{
site_ = site;
deal_id_ = deal_id;
payment_date_ = payment_date;
ccy1_ = ccy1;
ccy2_ = ccy2;
};
这将保护对初始化的更改。
我可以提出类似的东西(需要C 14在lambda捕获中重命名(:
DealSchedule trf_schedule;
[&_=trf_schedule]()
{
_.site_ = site;
_.deal_id_ = deal_id;
_.payment_date_ = payment_date;
_.ccy1_ = ccy1;
_.ccy2_ = ccy2;
}();
正确的答案是r_sahu的,但是如果您确实想要那种语法并且感觉自我毁灭...
struct _ : public DealSchedule { _() {
site_ = site;
deal_id_ = deal_id;
payment_date_ = payment_date;
ccy1_ = ccy1;
ccy2_ = ccy2;
}} trf_schedule;
这使用一个内联构造进行初始化,然后您可以将其切成 DealSchedule
。
(实际上没有这样做(
DealSchedule trf_schedule
{
site_ = site;
deal_id_ = deal_id;
payment_date_ = payment_date;
ccy1_ = ccy1;
ccy2_ = ccy2;
};
不是有效的C 语法来初始化对象。您可以使用
初始化对象DealSchedule trf_schedule = {site, deal_id, payment_date, ccy1, ccy2};
如果
- 相应的成员是
public
(在您的情况下听起来像是True(,并且没有提供其他明确或用户定义的构造函数,或者 - 有一个构造函数来获取这些论点。
相关文章:
- 为什么在C++中首先初始化成员类
- 是否可以防止省略聚合初始化成员?
- 正在复制具有未初始化成员的结构
- 使用大括号或括号初始化成员变量
- C++结构:强制初始化成员?
- C++中未初始化成员布尔变量的默认值是多少?
- 使用默认值初始化成员引用
- 在构造函数中初始化成员时,是否应该在成员上使用 std::move?
- C++使用 { } 初始化成员变量
- 如何根据构造函数参数使用超类类型初始化成员变量?
- OpenGL C++:VBO 的结构包装器不会初始化成员
- 有没有办法在Brace中初始化成员
- 从现有 istream 或类本身创建的 istream 初始化成员 istream
- 从其后声明的另一个成员数据初始化成员数据是否为未定义行为
- 通常应用方法,使用带有构造函数委托的 SFINAE 通过类模板的构造函数初始化成员
- 如何在嵌套类中初始化成员?C
- 是否可以在构造函数主体中初始化成员变量,而不是初始值设定项列表
- 编译器错误,因为构造函数必须显式初始化成员
- 如何使用成员函数初始化成员函数指针
- C 如何使用隐藏的默认构造函数初始化成员