-3

我得到的错误是

whole.cpp(384): error C2270: '==' : modifiers not allowed on nonmember functions
whole.cpp(384): error C2805: binary 'operator ==' has too few parameters
whole.cpp(384): error C2274: 'function-style cast' : illegal as right side of '.' operator

我似乎无法确定问题,所以这里是代码

这是类中的运算符实现 bool operator==(const DateC& p) const{return ( DateC::DateC()== p.DateC() );};

#include <assert.h>
int main(unsigned int argc, char* argv[])
{


DateC f(29,33,11);

DateC::testAdvancesWrap();
};

void DateC::testAdvancesWrap(void)
{
DateC d;
cout << "DateC::testAdvanceWrap()" << endl ;
cout << "*********************" << endl << endl ;
cout << "\tCHECK ADVANCE MULTIPLES:" << endl;
cout << "\t------------------------" << endl;
d.setDay(1);
d.setMonth(12);
d.setYear(1999); 
prettyPrint(d);
cout << "ACTION: set date 01-Dec-1999, advance, 31 days, 1 month and 1 year ->" << endl;
d.advance(1,1,31);

assert( d == DateC(1,2,2001) );

cout << "SUCCESS" << endl;

prettyPrint(d);
cout << endl << endl;
}

其余的功能工作正常它只是assert()

4

1 回答 1

3

当你创建自己的类时,如果你想比较它们,你需要为它们创建操作符。假设您想比较一个 Person 类的 2 个实例。

一个人由一个字符串和一个 int(姓氏和身高)组成。

我们希望通过身高来比较人,所以我们需要告诉编译器如何去做。一个例子:

class Person
{
    string lastname;
    int height;

    bool operator == (const Person& p) const
    {
        return (this->height == p.height);
    }

};

编辑:

我想你误解了我的例子,你只能比较编译器知道如何比较的东西。您的 Date 实现可能具有整数,因此如果您要检查是否相等,则必须检查所有字段。

用于this->访问函数中其他对象的字段。

于 2013-06-16T21:03:13.460 回答