模板类的代理结构

时间:2014-08-09 03:52:21

标签: c++ templates struct

我正在编写一个类的程序,其中基本问题是使用无符号整数向量,按位运算来模仿bool向量,但使用的内存要少得多。

要使operator []同时作为r值和l值工作,需要一个bitproxy结构,它在代码调用operator []和向量中的所需位之间进行调解。

教授包含了BitArray的接口,它将其声明为模板类,但在引用bitproxy时,没有使用模板。

这样的事情:

template < class IType = unsigned int >
class BitArray {
    vector<IType> list;
    int array_size;

public:
    ...
    functions()
    ...
    bitproxy operator[](size_t);
    ...
}

bitproxy需要访问BitArray的功能,这可以通过将其声明为朋友来从BitArray端轻松完成,但是如果没有相同的模板,bitproxy无法保持对BitArray的引用。这就是问题所在。

例如:

struct bitproxy{

    BitArray& bitarray;
    size_t pos;

    template < class IType >
    bitproxy(BitArray<IType>& bitarray, size_t pos)
        : ITypeT(IType), bitarray(bitarray), pos(pos);

    ...

}

低估了BitArray&amp; bitarray

struct bitproxy{

    template < class IType >
    BitArray<IType>& bitarray;
    size_t pos;

    template < class IType >
    bitproxy(BitArray<IType>& bitarray, size_t pos)
        : ITypeT(IType), bitarray(bitarray), pos(pos);

    ...

}

过度定义BitArray&amp; bitarray

我的教授是否犯了错误,并为bitproxy留下了模板,或者我是否错过了如何引用模板对象?

我是否需要向bitproxy添加模板,或者没有它可以做到吗?

0 个答案:

没有答案