我有一个我定义的类Date,它为日期建模,它有一天,一个月和一年作为数据成员。现在比较我创建相等运算符的日期
bool Date::operator==(const Date&rhs)
{
return (rhs.day()==_day && _month==rhs.month() &&_year==rhs.year());
}
现在如何从Proxy类调用Date类相等运算符...... ??
这是问题的编辑部分
这是日期类
//Main Date Class
enum Month
{
January = 1,
February,
March,
April,
May,
June,
July,
August,
September,
October,
November,
December
};
class Date
{
public:
//Default Constructor
Date();
// return the day of the month
int day() const
{return _day;}
// return the month of the year
Month month() const
{return static_cast<Month>(_month);}
// return the year
int year() const
{return _year;}
bool Date::operator==(const Date&rhs)
{
return (rhs.day()==_day && _month==rhs.month() &&_year==rhs.year());
}
~Date();
private:
int _day;
int _month;
int _year;
}
//--END OF DATE main class
这是我将替换Date类
的代理类//--Proxy Class for Date Class
class DateProxy
{
public:
//Default Constructor
DateProxy():_datePtr(new Date)
{}
// return the day of the month
int day() const
{return _datePtr->day();}
// return the month of the year
Month month() const
{return static_cast<Month>(_datePtr->month());}
// return the year
int year() const
{return _datePtr->year();}
bool DateProxy::operator==(DateProxy&rhs)
{
//what do I return here??
}
~DateProxy();
private:
scoped_ptr<Date> _datePtr;
}
//--End of Proxy Class(for Date Class)
现在我遇到的问题是在代理类中实现相等运算符函数,我希望这可以澄清这个问题。
答案 0 :(得分:3)
好吧,只需使用运营商:
Date d1, d2;
if(d1 == d2)
// ...
注意operator==
如何引用。这意味着,如果你有一个指针(或一个像scoped_ptr
或shared_ptr
这样的指针的对象),那么你必须首先取消引用它:
*_datePtr == *rhs._datePtr;
顺便说一句,您应该阅读:Operator overloading。
答案 1 :(得分:2)
return *_datePtr == *_rhs.datePtr;
答案 2 :(得分:0)
如果正确实现,它应该像任何其他相等运算符一样工作。
尝试:
Date a = //date construction;
Data b = //date construction;
if(a == b)
printf("a and b are equivalent");
else
printf("a and b are not equivalent");