我有一个类来表示二维数组,我想使用()运算符,例如,
Array arr;
arr(2,5) = 17; // I want to assign 17 as element in 2nd row and 5th column.
我试过这样的事情:(但是没有用)
void operator(int m, int n)(int num) {
int m, n;
p[m][n] = num;
}
我有一个操作符=(这个工作):
void operator=(const Array& other) const {
for (int i = 0; i < DIM; i++) {
for (int j = 0; j < DIM; j++) {
p[i][j] = other.p[i][j];
}
}
}
Array类将T **作为私有成员.
我如何使用overload()运算符来访问数组中的元素
谢谢!
解决方法:
你需要建立类似的东西
INT和放大器; operator()(int m,int n)
它返回对数组元素的引用,您可以通过调用站点上的引用进行修改.
不要忘记构建const重载
const int& operator()(int m,int n)const
因此,您可以在调用站点使用类似的语法来访问const对象的元素.
最后,对于你的赋值运算符,你不应该使它成为const(你是否已经使p变为可变?),并且你应该返回对self的引用以帮助复合赋值:
Array& operator=(const Array& other){
// Your existing code
return *this;
}
参考:http://en.cppreference.com/w/cpp/language/copy_assignment