首先,这是出于学术目的。我非常沮丧,我什至已经和朋友一起解决了半天。
我们正在与重载的运算符和朋友类一起工作,这个实验室让我觉得自己像个彻头彻尾的白痴。我将在下面发布重要的代码,但整个项目将在帖子底部的一个 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 对象传递给 Overtime 类构造函数,但据我了解,这应该是它应该如何工作的,因为加班对象是用每个 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