var*_*ick 4 c++ class operator-overloading
这是我的班级:
#ifndef CLOCK_H
#define CLOCK_H
using namespace std;
class Clock
{
//Member Variables
private: int hours, minutes;
void fixTime( );
public:
//Getter & settor methods.
void setHours(int hrs);
int getHours() const;
void setMinutes(int mins);
int getMinutes() const;
//Constructors
Clock();
Clock(int);
Clock(int, int);
//Copy Constructor
Clock(const Clock &obj);
//Overloaded operator functions
void operator+(const Clock &hours);
void operator+(int mins);
void operator-(const Clock &hours);
void operator-(int minutes1);
ostream &operator<<(ostream &out, Clock &clockObj); //This however is my problem where i get the error C2804. Saying that it has to many parameters
};
#endif
Run Code Online (Sandbox Code Playgroud)
所有这个功能应该是在不同时间输出一个时钟的值.
Ani*_*nge 15
ostream &operator<<(ostream &out, Clock &clockObj);
Run Code Online (Sandbox Code Playgroud)
应该
friend ostream &operator<<(ostream& out, Clock &clockObj);
Run Code Online (Sandbox Code Playgroud)
在课堂上定义了OUTSIDE.
请参阅此处:operator <<应该实现为朋友还是成员函数?
tao*_*ocp 10
ostream &operator<<(ostream &out, Clock &clockObj);
Run Code Online (Sandbox Code Playgroud)
应该
friend ostream &operator<<(ostream &out, Clock &clockObj);
Run Code Online (Sandbox Code Playgroud)
根据Stanley等人的C++ Primer(第四版第514页):
当我们定义符合iostream库约定的输入或输出运算符时,我们必须使它成为非成员运算符.我们不能让运算符成为我们自己的类的成员.如果我们这样做,那么左手操作数必须是我们类类型的对象
因此,重载<<和>>作为班级的朋友功能是一种好习惯.