我写了一堂课
struct opera{
int a,b;
int op;
opera(int a1=0,int b1=0,int op1=-1):a(a1),b(b1),op(op1){}
opera& operator=(opera& tmp){
a=tmp.a;
b=tmp.b;
op=tmp.op;
}
Run Code Online (Sandbox Code Playgroud)
我想将它分配给这样的数组元素:
ans[a][b]= opera(t.a,t.b,i);
Run Code Online (Sandbox Code Playgroud)
为什么它无法成功编译.
但是这可以工作:
opera tmp=opera(t.a,t.b,i);
ans[a][b]= tmp;
Run Code Online (Sandbox Code Playgroud)
当然,struct opera不需要显式赋值函数,而且
ans[a][b]= opera(t.a,t.b,i);
Run Code Online (Sandbox Code Playgroud)
可以直接工作.
当您想要从临时分配时,您需要
opera& operator=(opera const& tmp){
Run Code Online (Sandbox Code Playgroud)
另一条线
opera tmp=opera(t.a,t.b,i);
Run Code Online (Sandbox Code Playgroud)
是新对象的初始化,而不是赋值.