初始化 class 的成员 std::vector 变量,它是 c++ 中的引用

Initializing a member std::vector variable of a class that is a reference in c++

父 class 有这个变量:

AutoAssignActionVector vAutoAssignActions = dlgSettings.AutoAssignActions();

... 其中 AutoAssignActionVector 是:using AutoAssignActionVector = std::vector<S_MWB_AUTO_ASSIGN_ACTION>;.

现在,我想将这个向量作为参考传递给另一个class,因为另一个class需要修改它的属性。

所以,我将这个变量添加到另一个 class:

AutoAssignActionVector &m_vAutoAssignActions;

我的问题是它无法编译。目前子构造函数是:

CChristianLifeMinistryAutoAssignSelectNamesDlg::CChristianLifeMinistryAutoAssignSelectNamesDlg(CWnd* pParent /*=nullptr*/)
    : CDialogEx(IDD_DIALOG_OUR_CHRISTIAN_LIFE_AND_MINISTRY_AUTO_ASSIGN_SELECT_NAME, pParent)
{

}

我得到一个错误是可以理解的:

error C2530: CChristianLifeMinistryAutoAssignSelectNamesDlg::m_vAutoAssignActions: references must be initialized

我明白为什么会显示错误。但我无法将构造函数更改为:

CChristianLifeMinistryAutoAssignSelectNamesDlg::CChristianLifeMinistryAutoAssignSelectNamesDlg(CWnd* pParent /*=nullptr*/, AutoAssignActionVector &vAutoAssignActions)
    : CDialogEx(IDD_DIALOG_OUR_CHRISTIAN_LIFE_AND_MINISTRY_AUTO_ASSIGN_SELECT_NAME, pParent)
    , m_vAutoAssignActions(vAutoAssignActions)
{

}

...因为那时我得到另一个错误:

error C2548: CChristianLifeMinistryAutoAssignSelectNamesDlg::CChristianLifeMinistryAutoAssignSelectNamesDlg: missing default argument for parameter 2

如何解决这个问题?如果它是一个指针,我可以使用 = nullptr 但当它是一个引用时??

我看到了类似的问题,并试图确定是否能解决我的问题:

交换构造函数参数:

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