C++ 二进制表达式(';RadioDevice';和';const RadioDevice';)的操作数无效

C++ 二进制表达式(';RadioDevice';和';const RadioDevice';)的操作数无效,c++,c++11,C++,C++11,我在这个问题上陷入了困境,我正在尝试使用find()在列表中查找一个对象。代码如下: std::vector<RadioDevice> radioDevices; public: void add(CartesianLocation location, std::list<RadioSignal<RadioDevice>> observedSignals){ for(RadioSignal<RadioDevice> radioSignal

我在这个问题上陷入了困境,我正在尝试使用find()在列表中查找一个对象。代码如下:

std::vector<RadioDevice> radioDevices;
public:
void add(CartesianLocation location, std::list<RadioSignal<RadioDevice>> observedSignals){
    for(RadioSignal<RadioDevice> radioSignal : observedSignals) {
        if (std::find(radioDevices.begin(),
                      radioDevices.end(),
                      radioSignal.getRadioDevice()) != radioDevices.end()) {
            radioDevices.push_back(radioSignal.getRadioDevice());
        }
    }
}
std::矢量无线电设备;
公众:
无效添加(笛卡尔位置,标准::列出观测信号){
用于(无线电信号无线电信号:观测信号){
if(std::find(radioDevices.begin()),
radioDevices.end(),
radioSignal.getRadioDevice())!=radioDevices.end(){
radioDevices.push_back(radioSignal.getRadioDevice());
}
}
}
RadioSignal扩展了RadioDevice,它是一个纯抽象类。 如果find()中的(*\uuuu first==\uu value),我在
处得到以下错误

二进制表达式('RadioDevice'和'const RadioDevice'的操作数无效)


因此,假设您有一个类
无线电设备
定义为:

class RadioDevice {
public:
  virtual std::string getMacAddress();
  virtual RadioDeviceType getType();
  virtual double getFrequency();
  virtual std::string getIdentifier();
  virtual void setIdentifier(std::string identifier);
  virtual int getTxPower();
};
您需要为您的
无线设备
类定义一个
操作符==
。您可以通过添加

bool operator==(const RadioDevice& rhs, const RadioDevice& lhs) {
  return rhs.getIdentifier() == lhs.getIdentifier();
}

但是,这假设两个
RadioDevice
对象具有相同的标识符时是相等的。

用于
RadioDevice
操作符==
看起来像什么?RadioDevice是一个纯虚拟类。类无线设备{public:virtual std::string getMacAddress();virtual RadioDeviceType getType();virtual double getFrequency();virtual std::string getIdentifier();virtual void setIdentifier(std::string identifier);virtual int getxpower();}
std::find
要求您为其工作的类型定义了一个
运算符==
。因此,您需要定义一个。@TarunGupta请在问题中添加代码,而不是在注释中。@TarunGupta那么您将遇到更多问题,而不仅仅是
std::find
,因为您只存储
RadioDevice
实例,而不是指针,您正在切片所有对象。这样做,给我这个错误-重载的“operator==”必须是一个二进制运算符(有3个参数)。我不知道在我给出的示例中,运算符==是一个自由函数,不在类定义中。谢谢Zack,我理解得很晚,但这解决了我的问题。