Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » prüfen ob Objekt in Liste enthalten ist

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
21.07.2015, 19:54 Uhr
Tyroka



Hallo Leute,
Ich habe versucht ein Inventar in Form einer Liste zu coden, welches Objekte der Klasse ingredient enthält.
Nun möchte ich diesem Inventar ein Objekt hinzufügen, dafür prüfe ich zunächst ob es bereits in der Liste enthalten ist.

Ich bekomme aber immer folgenden Error:
(Ich nutze Microsoft Visual Studio)
error C2678: Binärer Operator '==': Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ 'ingredient' akzeptiert (oder keine geeignete Konvertierung möglich) cprogram files (x86)\microsoft visual studio 12.0\vc\include\xutility

Ich habe das Gefühl, dass man Objekte nicht auf Gleichheit untersuchen kann, stimmt dass?
(Ich habe nur den wichtigen Teil des codes gepostet)

Danke im Vorraus für eure Hilfe!
Lg Tyroka


C++:
//ingredient.h
#include <iostream>
#include <string>

class ingredient
{
private:
    string name;
public:
    ingredient(string const &a)
        : name(a)
    {
    }
    string getName(){
        return name;
    }
};




C++:
//mainfile.cpp
#include <list>
#include <algorithm>

#include "ingredient.h"

ingredient moonweed("moonweed")
list <ingredient> invList = { moonweed };

bool Contains(ingredient x){
    if (find(invList.begin(), invList.end(), x) == invList.end()){
        return false;
    }
    return true;
}

void addtoInventory(ingredient i, int c){ //c = Anzahl
    if (Contains(i) == true){
        std::cout << "Vorhanden!";
        invList.push_back(i);
    }
    i.addCount(c);
}

int main(){
    addtoInventory(moonweed, 4);
}


Dieser Post wurde am 21.07.2015 um 20:03 Uhr von Tyroka editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.07.2015, 16:46 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hi,

naja er sagt es ja bereits: kein operator == definiert

ohne vergleichsoperator kann er nun mal keine zwei ingredients vergleichen.

d.h du brauchst sowas wie:


C++:
class ingredient
{
public:
   bool operator==(const ingredient& other) const
   {
      return name == other.name;
   }
   ...



dann kann er die ingredients per name vergleichen.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.07.2015, 17:26 Uhr
Tyroka



Danke sehr! Dass war genau das wonach ich gesucht habe.


Habe dennoch eine Frage:
Was hat das ingredient& zu bedeuten?
Wäre das & vor dem ingredient würde es auf die Speicheradresse verweisen, aber was bedeutet es wenn es danach kommt?

Dieser Post wurde am 23.07.2015 um 17:34 Uhr von Tyroka editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: