如何将对象存储为数组,列表或映射中的引用?

时间:2011-08-05 06:13:51

标签: c++

让我们举一个数组

的例子
class Bird{
public:
int a;
};

void fn(Bird& obj){
Bird& arrayList[5];
arrayList[0] = obj;
arrayList[0].a = 10;
}

这里arrayList中的任何更新都不会反映在obj对象中 我的要求是停止复制obj对象。 arraylist应该引用obj;

请不要使用指向Bird的指针数组

3 个答案:

答案 0 :(得分:3)

您不能拥有一系列参考文献。

答案 1 :(得分:2)

C ++标准对此非常清楚(见8.3.2和8.3.4)。简而言之,数组是一系列对象。引用不是对象。因此,您不能拥有一系列参考文献。

(由于类似的原因,没有对引用或引用指针的引用:引用是对象的别名,而指针指向对象,但引用是对象本身。)

答案 2 :(得分:0)

您使用的构造:

Bird& arrayList[5];

不允许。您应该自己存储对象:

vector<Bird> Birds;
Bird arrayList[5];

或指针

vector<Bird*> Birds;
Bird* arrayList;

这是唯一推荐的选项。