MnZn 求助重载运算符

学术版

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


| 下一页