求大神 C++ friend问题 fatal error C1001: INTERNAL COMPILER ERROR
答案:3 悬赏:50
解决时间 2021-03-02 19:35
- 提问者网友:纹身骑士
- 2021-03-02 08:44
#include
using namespace std;
class complex
{
private:
int real;
int imag;
public:
complex(){real=0;imag=0;}
complex(int r,int i){real=r;imag=i;}
friend complex operator + (complex &c1,complex &c2);
void display()
{
cout<<"After the calculation"< }
};
complex operator + (complex &c1,complex &c2)
{
return complex(c1.real+c2.real,c1.imag+c2.imag);
}
int main()
{
complex c1(2,3),c2(3,4),c3;
c1.display();
c2.display();
c3.display();
c3=c1+c2;
c3.display();
}
最佳答案
- 二级知识专家网友:厭世為王
- 2021-03-02 09:52
#include
using namespace std;
class complex; // 因为下面的声明,所以需要先声明有这个类
complex operator + (complex &c1, complex &c2); // 要先声明这个函数
class complex
{
private:
int real;
int imag;
public:
complex(){real=0;imag=0;}
complex(int r,int i)
{
real=r;
imag=i;
}
friend complex operator + (complex &c1, complex &c2); // 找个没有找到声明的地方,要先声明。已加到前面
void display()
{
cout<<"After the calculation"<
}
};
complex operator + (complex &c1,complex &c2)
{
return complex(c1.real+c2.real,c1.imag+c2.imag);
}
int main()
{
complex c1(2,3),c2(3,4),c3;
c1.display();
c2.display();
c3.display();
c3=c1+c2;
c3.display();
}
全部回答
- 1楼网友:最后战士
- 2021-03-02 12:03
这是使用std名字空间的问题,在complex类定义之前对函数提前声明即可,即:
...
using namespace std;
class complex; //
complex operator + (complex &c1,complex &c2); //
class complex
{
...
- 2楼网友:专属的偏见
- 2021-03-02 11:31
这是使用std名字空间的问题,在complex类定义之前对函数提前声明即可,即:
...
using namespace std;
class complex; //
complex operator + (complex &c1,complex &c2); //
class complex
{
...
再看看别人怎么说的。
我要举报
大家都在看
推荐资讯