初始化类成员std ::向量变量,该变量是C+&#x2B中的参考
父类具有此变量:
AutoAssignActionVector vAutoAssignActions = dlgSettings.AutoAssignActions();
... autoAssignActionVector
is:使用autoAssignActionVector = std :: vector< s_mwb_auto_assign_action_action&gt ;;
。
现在,我想将此向量作为参考将其传递到另一个类中,因为其他类需要修改其属性。
因此,我将此变量添加到另一类:
AutoAssignActionVector &m_vAutoAssignActions;
我的问题是它不会编译。目前,儿童构造函数是:
CChristianLifeMinistryAutoAssignSelectNamesDlg::CChristianLifeMinistryAutoAssignSelectNamesDlg(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_DIALOG_OUR_CHRISTIAN_LIFE_AND_MINISTRY_AUTO_ASSIGN_SELECT_NAME, pParent)
{
}
我可以理解出现错误:
错误c2530:
cchristian -lifemoinisisionautoAssignSelectnamesdlg :: m_vautoassignactions
:必须初始化参考
我了解为什么显示错误。但是我无法将构造函数更改为:
CChristianLifeMinistryAutoAssignSelectNamesDlg::CChristianLifeMinistryAutoAssignSelectNamesDlg(CWnd* pParent /*=nullptr*/, AutoAssignActionVector &vAutoAssignActions)
: CDialogEx(IDD_DIALOG_OUR_CHRISTIAN_LIFE_AND_MINISTRY_AUTO_ASSIGN_SELECT_NAME, pParent)
, m_vAutoAssignActions(vAutoAssignActions)
{
}
...因为然后我得到另一个错误:
错误c2548:
cChristian -lifeministorautoAssignSelectNamesdlg :: cchristian -lifeminisisianlifeministryautoassignsignsectnamesdlg
:缺少参数的默认参数2
我如何解决这个问题?如果是指针,我可以使用= nullptr
,但是当它是参考时?
我看到了类似的问题,并试图确定我的问题是否答案:通过参考类构造函数通过向量
The parent class has this variable:
AutoAssignActionVector vAutoAssignActions = dlgSettings.AutoAssignActions();
... where AutoAssignActionVector
is: using AutoAssignActionVector = std::vector<S_MWB_AUTO_ASSIGN_ACTION>;
.
Now, I want to pass this vector as a reference into another class, because the other class needs to modify its properties.
So, I added this variable to the other class:
AutoAssignActionVector &m_vAutoAssignActions;
My problem is that it won't compile. At the moment the child constructor is:
CChristianLifeMinistryAutoAssignSelectNamesDlg::CChristianLifeMinistryAutoAssignSelectNamesDlg(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_DIALOG_OUR_CHRISTIAN_LIFE_AND_MINISTRY_AUTO_ASSIGN_SELECT_NAME, pParent)
{
}
I understandably get a error:
error C2530:
CChristianLifeMinistryAutoAssignSelectNamesDlg::m_vAutoAssignActions
: references must be initialized
I understand why the error is displayed. But I can't change the constructor to:
CChristianLifeMinistryAutoAssignSelectNamesDlg::CChristianLifeMinistryAutoAssignSelectNamesDlg(CWnd* pParent /*=nullptr*/, AutoAssignActionVector &vAutoAssignActions)
: CDialogEx(IDD_DIALOG_OUR_CHRISTIAN_LIFE_AND_MINISTRY_AUTO_ASSIGN_SELECT_NAME, pParent)
, m_vAutoAssignActions(vAutoAssignActions)
{
}
... because then I get another error:
error C2548:
CChristianLifeMinistryAutoAssignSelectNamesDlg::CChristianLifeMinistryAutoAssignSelectNamesDlg
: missing default argument for parameter 2
How do I get around this issue? If it were a pointer I could use = nullptr
but when it is a reference??
I see similar question and trying to establish if is answers my problem: Pass vector by reference to constructor of class
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
交换构造函数参数:
Swap the constructor parameters: