一个简单的类赋值函数问题

liu*_*liu 1 c++ class assign

我写了一堂课

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)

可以直接工作.

Bo *_*son 5

当您想要从临时分配时,您需要

  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)

是新对象的初始化,而不是赋值.