0

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

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;
};

编译器说不,没有指向引用的指针......可能吗?

4

2 回答 2

3

不 -Collection<Integer32&> b;无效,您不能拥有参考集合。

其余的都是合法的——你的类应该编译。

于 2013-01-18T23:05:26.730 回答
1

像普通数组这样的标准容器不支持将引用作为值类型,但是如果您创建自己的集合类型,则可以这样做。

在内部,集合必须将引用存储为可以复制和分配的东西。您可以使用普通指针或查看 std::reference_wrapper 以获得此类表示。

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

于 2013-01-18T23:52:20.463 回答