c++ - 在构造函数中给定引用,将类变量设置为引用

标签 c++

假设我有一个类构造器:

.h文件

class Memo {
    public:
    typedef vector<Memo> MemoList;
    Memo (int id, Memo::MemoList &list);
    MemoList pile;
};

.cc文件

Memo::Memo (int id, Memo::MemoList &list) {
    pile = list;
}

pile 是“相同的东西”还是“等于”list,或者我是否需要一个新变量作为对 的引用列表?我希望能够修改 pile 并让它影响原始 list

最佳答案

简单回答你的问题:

do I need to have a new variable which acts as a reference to list? I would like to be able to modify pile and have it affect the original list.

:

您需要将列表存储为引用:

MemoList& pile;
//      ^

并且必须在构造函数的初始化列表中初始化引用:

Memo::Memo (int id, Memo::MemoList &list) : pile(list) {
}

当您的Memo 必须是可复制的(现在不是)时,使用指针而不是引用。

请记住(也许一开始应该告诉您)以这种方式编程不是很安全 - 您必须确保您的列表生命周期比您的 Memo 对象长!!!

关于c++ - 在构造函数中给定引用,将类变量设置为引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13336597/

相关文章:

c++ - 有没有办法根据模板参数的类型在不同的类实现之间进行选择?

c++ - 函数调用的 "this"的评估是否以相对于参数的未指定顺序进行?

c++ - 创建一个类的所有构造函数的类型列表

c++ - 指向二维数组的指针在 C++ 中如何工作?

c++ -/usr/bin/ld : cannot find -lgd

c++ - 有效地计算两个 std::multimap 迭代器之间的条目数

c++ - 为什么此代码无法计算功率(效率较低)?

c++ - 从头文件访问数组会使程序崩溃

c++ - 在 linux 中编译简单的 C++ 程序(第一次)

c++ - 可以在一个文件中定义两个 `istream_iterator` 吗?