有没有办法在Brace中初始化成员

is there a way to initialize members in brace?

本文关键字:初始化 成员 Brace 有没有      更新时间:2023-10-16

我有一个与某些成员定义的类交易,现在我必须用以下内容进行初始化。

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};

如果

  1. 相应的成员是public(在您的情况下听起来像是True(,并且没有提供其他明确或用户定义的构造函数,或者
  2. 有一个构造函数来获取这些论点。