作为练习我正在制作模板Array类,我想执行此操作:
Array<int> a[5];
a[4] = 2;
我该怎么写呢? 我试过了:
template<class T> class Array{
...
T operator[(const int loc)]=(const T temp);
答案 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
。