# C++重载运算符=

1
[已解决问题] 解决于 2020-04-29 20:49
``` 1 #include <iostream>
2
3 using namespace std;
4
5 class Matrix
6 {
7     private:
8         int a,b;
9         int arr[100][100];
10     public:
11         Matrix()
12         {
13             for(int i=0;i<100;i++)
14             {
15                 for(int j=0;j<100;j++)
16                 {
17                     arr[i][j]=0;
18                 }
19             }
20         }
21         void Gethl(int a, int b){this->a=a;this->b=b;}
22         void Getnum()
23         {
24             for(int i=0;i<a;i++)
25             {
26                 for(int j=0;j<b;j++)
27                 {
28                     cin>>arr[i][j];
29                 }
30             }
31         }
32         Matrix operator+(Matrix &c)
33         {
34             Matrix temp;
35             for(int i=0;i<a;i++)
36             {
37                 for(int j=0;j<b;j++)
38                 {
39                     temp.arr[i][j]=this->arr[i][j]+c.arr[i][j];
40                 }
41             }
42             return temp;
43         }
44         Matrix operator=(Matrix &c)
45         {
46               for(int i=0;i<a;i++)
47             {
48                 for(int j=0;j<b;j++)
49                 {
50                     arr[i][j]=c.arr[i][j];
51                 }
52             }
53         }
54         void show()
55         {
56             for(int i=0;i<a;i++)
57             {
58                 for(int j=0;j<b;j++)
59                 {
60                     if(j!=0)    cout<<" "<<arr[i][j];
61                     else    cout<<arr[i][j];
62                     if(j==b-1)  cout<<endl;
63                 }
64             }
65         }
66 };
67
68 int main()
69 {
70     int a,b;
71     cin>>a>>b;
72     Matrix one,two,three;
73     one.Gethl(a,b);
74     two.Gethl(a,b);
75     one.Getnum();
76     two.Getnum();
77     three=one+two;
78     three.show();
79     return 0;
80 }```

[Error] no match for 'operator=' (operand types are 'Matrix' and 'Matrix')

Conan-jine | 小虾三级 | 园豆：1020

。淑女范erり 5个月前

@。淑女范erり: 那我需要怎么写呢?我这会新学的没怎么明白,就试着做题了,毕竟做题才能更好的理解知识

Conan-jine 5个月前

@。淑女范erり: 网上搜的那些没讲不明白或者我看不懂

Conan-jine 5个月前

@Conan-jine: 重载运算符，没有特殊需要的话，最好返回引用。多问一句，你这是在自学C++吗。。

。淑女范erり 5个月前

@。淑女范erり: 原本是自学的,结果这学期学院开课了,不过还是习惯自己的节奏,自己捣鼓,实在不懂了再麻烦老师

Conan-jine 5个月前

@。淑女范erり: 我找到问题了,是因为我重载了两个运算符,一个+,一个=,但是+的返回值和=的参数类型不一样,导致 a=b+c不能运行,而a=b却可以,谢谢你,你别在评论里说话了,选择回复呀,我给你最佳答案

Conan-jine 5个月前

@Conan-jine: 回了，(#.#)

。淑女范erり 5个月前

1

。淑女范erり | 小虾三级 |园豆：799 | 2020-04-29 20:45

您需要登录以后才能回答，未注册用户请先注册