初始化类成员std ::向量变量,该变量是C+&#x2B中的参考

发布于 2025-01-27 13:47:09 字数 1632 浏览 2 评论 0原文

父类具有此变量:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

2025-02-03 13:47:09

交换构造函数参数:

class CChristianLifeMinistryAutoAssignSelectNamesDlg : public CDialogEx
{
  CChristianLifeMinistryAutoAssignSelectNamesDlg(
    AutoAssignActionVector &vAutoAssignActions,
    CWnd* pParent = nullptr);
};

Swap the constructor parameters:

class CChristianLifeMinistryAutoAssignSelectNamesDlg : public CDialogEx
{
  CChristianLifeMinistryAutoAssignSelectNamesDlg(
    AutoAssignActionVector &vAutoAssignActions,
    CWnd* pParent = nullptr);
};
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文