首先,这是出于学术目的。我非常沮丧,我甚至和朋友一起工作了半天。
我们正在与重载的操作员和朋友班一起工作,这个实验室让我觉得自己像个完全白痴。我将在下面发布重要的代码,但整个项目将在帖子底部的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";
}
绝对不是&lt;&lt;&lt;&lt;&lt;&lt;&lt;重载,但我基本上直接从我的书中复制代码来尝试这样做。
原始代码链接已损坏,这是一个永久链接。 http://www.mediafire.com/file/j4q3fln9a8p98ll/dayCounter.zip
还修改了我的代码。不能很好地工作,但它确实编译并且主要是工作。 http://www.mediafire.com/file/g5m21drbuab8tso/Lab5workCounter.zip
答案 0 :(得分:0)
NumDays
没有默认构造函数,因此您无法创建一个然后在运算符中设置其hours
成员。NumDays&
返回operator++()
类型。 (这只是一个好主意;它不需要在此处进行任何其他代码更改。)operator<<
定义为类成员,因为它应该采用std::ostream&
第一个参数。()
放在方法调用上。