C ++参考集合

时间:2013-01-18 23:03:51

标签: c++

所以...你不能做一个引用数组,但是你可以构建一个能处理引用,指针和值的集合吗?

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没有指向引用的指针......可能吗?

2 个答案:

答案 0 :(得分:3)

Nope - Collection<Integer32&> b;无效,您不能拥有一系列参考文献。

其余的都是合法的 - 你的班级应该编译。

答案 1 :(得分:1)

普通数组之类的标准容器不支持引用作为值类型,但如果您创建自己的集合类型,则可以执行此操作。

在内部,Collection必须将引用存储为可以复制和分配的内容。您可以使用普通指针或查看std :: reference_wrapper来表示这种表示。

您可能需要对参考案例使用部分特化。