Ich steckte schlecht auf dieses Problem, ich versuche, ein Objekt in der Liste mit find() zu finden. Unten ist der Code:Ungültige Operanden für binären Ausdruck ('RadioDevice' und 'const RadioDevice')
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, die eine reine abstrakte Klasse ist erweitert. Ich erhalte unter Fehlern bei if (*__first == __value_) in find()
Ungültige Operanden binären Ausdruck ('RadioDevice' und 'const RadioDevice')
Wie sieht der Operator '= 'für' RadioDevice' aus? – NathanOliver
RadioDevice ist eine reine virtuelle Klasse. Klasse RadioDevice { public: virtuelle std :: string getMacAddress(); virtueller RadioDeviceType getType(); virtuelles Doppel getFrequency(); virtuelle std :: string getIdentifier(); virtueller void setIdentifier (std :: string identifier); virtueller Int getTxPower(); }; – Tarun
'std :: find' erfordert, dass Sie für die Typen, mit denen es arbeitet, einen' operator == 'definiert haben. Sie müssen also einen definieren. – Zack