模板运算符[] =

时间:2011-10-06 14:45:08

标签: c++ class templates operator-keyword

作为练习我正在制作模板Array类,我想执行此操作:

Array<int> a[5];

a[4] = 2;

我该怎么写呢? 我试过了:

template<class T> class Array{
...
T operator[(const int loc)]=(const T temp);

1 个答案:

答案 0 :(得分:8)

你写了一个operator [],它返回对元素的引用。作为参考,可以通过=分配给它。

template <typename T>
class Array {
    …
    T& operator [](unsigned int const loc) {
        …
    }
};

(参数中的const并不常用,但请继续在函数的定义中使用它 - 但是,在声明中没有任何意义。)

您通常需要另一个const的版本操作符,以便您仍然可以从const数组中读取值:

Array<int> x;
Array<int> const& y = x;

std::cout << y[0]; // Won’t compile!

要使最后一行编译,请将以下代码添加到您的类中:

T const& operator [](unsigned int const loc) const {
    …
}

请注意,返回值以及函数本身都标记为const