C++ c++;运算符的多个定义<&书信电报;
我试图覆盖C++ c++;运算符的多个定义<&书信电报;,c++,overriding,iostream,operator-keyword,C++,Overriding,Iostream,Operator Keyword,我试图覆盖您正在违反一个定义规则。快速解决方法是: inline ostream& operator<<(ostream& out, const CRectangle& r){ return out << "Rectangle: " << r.x << ", " << r.y; } 奖金: 使用包括防护装置 使用名称空间std删除从标题开始 您正在将函数的定义放入.h文件中,这意味着它将出现在每个翻译
您正在违反一个定义规则。快速解决方法是:
inline ostream& operator<<(ostream& out, const CRectangle& r){
return out << "Rectangle: " << r.x << ", " << r.y;
}
奖金:
- 使用包括防护装置
- 使用名称空间std删除
代码>从标题开始
您正在将函数的定义放入.h
文件中,这意味着它将出现在每个翻译单元中,违反了一条定义规则(=>您定义的运算符在成员定义的情况下:如果CRectangle
上方和重载中有另一个类定义
#include <iostream>
using namespace std;
class CRectangle {
private:
int x, y;
friend ostream& operator<<(ostream& out, const CRectangle& r);
public:
void set_values (int,int);
int area ();
};
ostream& operator<<(ostream& out, const CRectangle& r){
return out << "Rectangle: " << r.x << ", " << r.y;
}
#include "Rectangle.h"
using namespace std;
int CRectangle::area (){
return x*y;
}
void CRectangle::set_values (int a, int b) {
x = a;
y = b;
}
#include <iostream>
#include "Rectangle.h"
using namespace std;
int main () {
CRectangle rect;
rect.set_values (3,4);
cout << "area: " << rect.area();
return 0;
}
inline ostream& operator<<(ostream& out, const CRectangle& r){
return out << "Rectangle: " << r.x << ", " << r.y;
}
class CRectangle {
private:
int x, y;
public:
void set_values (int,int);
int area ();
friend ostream& operator<<(ostream& out, const CRectangle& r){
return out << "Rectangle: " << r.x << ", " << r.y;
}
};