friend Martix operator
by TMLY114514 @ 2024-04-13 12:56:47
@[TMLY114514](/user/1121439) 这个没什么区别的吧
by yanyan2 @ 2024-04-13 13:08:03
哦那应该是是你加法里面没写A.M,B.M
by TMLY114514 @ 2024-04-13 13:25:02
@[TMLY114514](/user/1121439) 我就是想问怎么样才能不加这个东西,我已经重载了 `[]`
by yanyan2 @ 2024-04-13 13:47:42
@[yanyan2](/user/1087963) 去掉 传参的 const
by As_Snow @ 2024-04-13 14:25:39
`mint *operator [](int x)const{return M[x];}`试一下
by yukimianyan @ 2024-04-13 14:40:32
哦好像确实是运算符里面传参const的问题
by TMLY114514 @ 2024-04-13 14:41:33
这种就没问题
```
struct node{
int a[3][3];
int *const operator[](const int i){
return a[i];
}
friend bool operator<(node a,node b){
for(int i=0;i<3;++i){
for(int j=0;j<3;++j){
if(a[i][j]>b[i][j])return 1;
}
}
return 0;
}
};
```
by TMLY114514 @ 2024-04-13 14:42:17
@[As_Snow](/user/548999) 但是是什么原理呢
by yanyan2 @ 2024-04-13 14:55:34
@[yanyan2](/user/1087963) 我的理解是编译器会认为
```
int* operator[](...) {}
```
会修改返回值,而
```
int *operator[](...) const {}
```
不会。但显然前者会与 `const node a` 的常量性质冲突,所以 CE。
by As_Snow @ 2024-04-13 15:03:57