简体   繁体   English

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

[英]Invalid operands to binary expression ('RadioDevice' and 'const RadioDevice')

I stuck badly on this issue, I am trying to find an object in list using find(). 我严重困扰这个问题,我试图使用find()在列表中找到一个对象。 Below is the code: 以下是代码:

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 extends RadioDevice which is an pure abstract class. RadioSignal扩展了RadioDevice,这是一个纯粹的抽象类。 I am getting below error at if (*__first == __value_) in find() if (*__first == __value_) in find()时遇到错误

Invalid operands to binary expression ('RadioDevice' and 'const RadioDevice') 二进制表达式的无效操作数('RadioDevice'和'const RadioDevice')

So, assuming you have a class RadioDevice defined as: 因此,假设您将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();
};

You'll need to define an operator== for your RadioDevice class. 您需要为RadioDevice类定义operator== You can do that by adding 你可以通过添加来做到这一点

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

but, this assumes that two RadioDevice objects are equal if they have the same identifiers. 但是,假设两个RadioDevice对象具有相同的标识符,则它们是相等的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM