所以...你不能做一个引用数组,但是你可以构建一个能处理引用,指针和值的集合吗?
Collection<Integer32*> a;
Collection<Integer32&> b;
Collection<Integer32> c;
以下是我遇到的问题:
template <class ItemType> class Collection
{
public:
Collection(ItemType array[]); // or ItemType*, doesnt matter
protected:
ItemType* innerArray;
};
编译器说nope没有指向引用的指针......可能吗?
答案 0 :(得分:3)
Nope - Collection<Integer32&> b;
无效,您不能拥有一系列参考文献。
其余的都是合法的 - 你的班级应该编译。
答案 1 :(得分:1)
普通数组之类的标准容器不支持引用作为值类型,但如果您创建自己的集合类型,则可以执行此操作。
在内部,Collection必须将引用存储为可以复制和分配的内容。您可以使用普通指针或查看std :: reference_wrapper来表示这种表示。
您可能需要对参考案例使用部分特化。