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

时间:2016-05-25 12:00:15

标签: c++ c++11

我严重困扰这个问题,我试图使用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'和'const RadioDevice')

1 个答案:

答案 0 :(得分:3)

因此,假设您将类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(); }; 定义为:

operator==

您需要为RadioDevice课程定义bool operator==(const RadioDevice& rhs, const RadioDevice& lhs) { return rhs.getIdentifier() == lhs.getIdentifier(); } 。您可以通过添加

来实现
RadioDevice

但是,假设两个<td>对象具有相同的标识符,则它们是相等的。