首先,这是为了学术目的。我非常沮丧,而且我甚至一直在和一位朋友一起工作半天。朋友课程和重载的操作员
我们正在与重载的操作员和朋友班一起工作,这个实验让我觉得自己像个白痴。我将在下面发布重要代码,但整个项目将在帖子底部的zip文件中。我相信它充满了错误,它现在拒绝保存我的一些代码(它一直抛出异常)。
这是我的主要类的头文件代码
class NumDays
{
private:
int hours;
double days;
void calcDays(int);
public:
NumDays (int);
void setHours (int);
double getWork();
NumDays operator+ (const NumDays &);
NumDays operator- (const NumDays &);
NumDays operator++();
void operator<< (const NumDays &);
friend class Overtime(const NumDays &);
};
它似乎不喜欢我试图在NUMDAYS传递对象进入加时赛类的构造函数,但是从我的理解,这是怎么了它应该工作,因为加班对象是与每个NumDays对象构建的
第二个问题是对于重载的操作符,我在解决这个问题时遇到了更少的麻烦,以及为什么必须特别实现它。
这是重载运算
/*overloading the + operator***************************************************/
NumDays NumDays::operator+ (const NumDays &right)
{
NumDays temp;
temp.hours = hours + right.hours;
return temp;
}
/*overloading the -operator***************************************************/
NumDays NumDays::operator- (const NumDays &right)
{
NumDays temp;
temp.hours = hours - right.hours;
return temp;
}
/*overloading the ++ operator**************************************************/
NumDays NumDays::operator++()
{
++hours;
return *this;
}
/*overloading the << operator**************************************************/
void NumDays::operator<< (const NumDays &objOput)
{
cout << objOput.getWork << " days have been worked by this work";
}
代码这绝对不是< <超载的粉丝,但我基本上是复制的代码直接从我的书,试图做到这一点。
原始代码链接被破坏,这是一个永久链接。 http://www.mediafire.com/file/j4q3fln9a8p98ll/dayCounter.zip
也稍微修复了我的代码。不完美的工作,但它编译和主要是工作。 http://www.mediafire.com/file/g5m21drbuab8tso/Lab5workCounter.zip
'cout << objOput.getWork <<“天已被这个工作工作过了;'''''objOput.getWork'是一个函数。查看该行的任何内容是否有误,如缺少括号? – PaulMcKenzie
这不是一个'friend'声明是如何工作的(既不是语法也不是wrt。语义),你不需要它。 –
同意@ Cheersandhth.-Alf。再看看['朋友'声明](http://en.cppreference.com/w/cpp/language/friend)。 –