Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;运算符的多个定义<&书信电报;_C++_Overriding_Iostream_Operator Keyword - Fatal编程技术网

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;
        }
};