二进制表达式的操作数无效("无线电设备"和"常量无线电设备")

Invalid operands to binary expression ('RadioDevice' and 'const RadioDevice')

本文关键字:无线电 常量 二进制 操作数 无效 表达式      更新时间:2023-10-16

我在这个问题上坚持得很糟糕,我正在尝试使用 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());
        }
    }
}

RadioSignal扩展了RadioDevice,这是一个纯粹的抽象类。我在if (*__first == __value_) in find()错误以下

二进制表达式的操作数无效("无线电设备"和"常量无线电设备")

因此,假设您有一个类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();
};

您需要为 RadioDevice 类定义一个operator==。您可以通过添加

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

但是,这假定两个RadioDevice对象具有相同的标识符,则它们是相等的。