【发布时间】:2015-03-22 18:09:14
【问题描述】:
我见过很多添加相同类对象的示例。我试图使用运算符重载添加两个不同的类对象。 代码:
#include<iostream>
using namespace std;
class B;
class A
{
public:
int x;
A(int t=99)
{
x=t;
}
friend const A operator+( A& m, B& n);
friend ostream& operator<<(ostream& os, const A& c);
};
const A operator+(A& c1,B& c2)
{
A temp;
temp.x = c1.x + c2.y;
return temp;
}
ostream& operator<<(ostream &os, const A& c)
{
os << c.x;
return os;
}
class B
{
public:
int y;
B(int e=90)
{
y=e;
}
friend const A operator+( A& m, B& n);
};
int main()
{
A a,u;
B b;
u=a+b;
cout<<"Value of A+B"<<u;
return 0;
}
当我编译我的代码时,它显示错误:
$ g++ operator_overloading.cpp
operator_overloading.cpp:在函数'const A operator+(A&, B&)'中:
operator_overloading.cpp:19:21: 错误:无效使用不完整类型‘struct B’
operator_overloading.cpp:3:7: 错误:‘struct B’的前向声明
我做错了什么??
【问题讨论】: