0

我有一个头文件,我在其中声明一个带有结构的类。此外,我将一个重载运算符(!=,用于比较结构)声明为此类的成员。我在 cpp 文件中给出了这个运算符的定义。但我无法访问结构的成员

汽车.h

class car
{ 
int carsor;

struct model
{
    int id;

    int mode;

}prev,curr;

bool operator !=(const model& model1);

};

汽车.cpp

#include "car.h"

bool car::operator !=(const model& model1)
{
if((model1.id==model.id)&&(model1.mode==model.mode))
{
    return false;
}

else
{

    return false;
}
}

我得到的错误是这个

Error   2   error C2275: 'car::model' : illegal use of this type as an expression   

我应该如何访问结构成员?

4

2 回答 2

3

if((model1.id==model.id)&&(model1.mode==model.mode))-model是你的班级的名字,而不是你的对象。您的对象可以通过访问,this或者您可以在类中完全省略它。用于if((model1.id==prev.id)&&(model1.mode==prev.mode))比较previf((model1.id==next.id)&&(model1.mode==next.mode))与下一个比较。

于 2012-10-29T15:26:13.317 回答
0

这:

bool car::operator !=(const model& model1)
{

是一种比较汽车和模型的方法。然而,这:

bool car::model::operator != (car::model const &other) const
{
  return !(*this == other);
}

是一种比较两个模型的方法(我在这里将其写为 的方法car::model,但如果您愿意,它可以是一个自由函数。

我也用 来编写它operator==,因为逻辑几乎总是更容易解决:

bool car::model::operator ==(car::model const &other) const
{
    return (this->id == other.id) && (this->mode == other.mode);
}

这些方法将被声明为:

class car
{ 
    struct model
    {
        int id;
        int mode;
        bool operator==(model const&) const;
        bool operator!=(model const&) const;
        // ...
于 2012-10-29T15:44:25.993 回答