#include <iostream>
...
template <class T>
T dynamic_array<T>::operator[](int idx) {
return this->array[idx];
}
template <class T>
T& dynamic_array<T>::operator[](int idx) {
return this->array[idx];
}
using namespace std;
int main() {
dynamic_array<int>* temp = new dynamic_array<int>();
// Uses the T& type since we are explicitly
// trying to modify the stored object
(*temp)[0] = 1;
// Uses the T type since nothing in the array
// should be modified outside the array
int& b = (*temp)[0];
// For instance...
b = 4;
cout<<(*temp)[0]; // Should still be 1
return 0;
}
我试图按照显而易见的方式进行重载,但是会出现编译器错误。
有没有正确的方法来做到这一点?
到目前为止,我的搜索并没有成功。所有我看到的关于重载[]运算符的内容,似乎都接受用户可以在对象之外修改存储的项目。
我已经实现了使用(instance(int i), update(int i, T obj))的方法,但能像普通数组一样使用这个类会更好。