return NULL-Objekt .. geht das?



  • Hallo, ich habe folgendes Problem:

    Ich habe eine Funktion welche mir aus einer Liste ein bestimmtes Objekt zurückliefern soll, ist kein Objekt in der Liste enthalten das den Kriterien entspricht dann möchte ich NULL zurückgeben.

    Ist dies überhaupt möglich?
    Leider bekomm ich immer den Fehler dass NULL bzw. nullptr nicht nicht vom gewünschten Objekt sind.

    Als Beispiel vieleicht noch meine Funktion, diese durchsucht einfach eine Liste nach einem Objekt zu dem der übergebene Name passt:

    Option Entity::getOptionByName(string name) {
    	list<Option>::iterator it = _options.begin();
    	for(it=_options.begin(); it!=_options.end(); ++it)
    		if((*it).getName()==name) return *it;
    	return nullptr;
    }
    


  • Wenn Option kein Pointer ist, kannst du auch kein NULL zurück geben.

    Probier mal das hier:

    Option* Entity::getOptionByName(string name) {
        list<Option>::iterator it = _options.begin();
        for(it=_options.begin(); it!=_options.end(); ++it)
            if((*it).getName()==name) return it;
        return NULL;
    }
    


  • Schonmal besten Dank, das funktioniert jetzt sehr gut 🙂

    Jetzt habe ich bloß gerade keine Ahnung wie ich an das Objekt in der Liste komme 😕

    denn it ist der Iterator der Liste, mit it komm ich ans Object, aber wie mache ich jetzt da ne funktionierende Referenz drauf? Habe es so probiert, scheint aber grundlegend falsch zu sein 🙂 : &(it)

    Nein stop, funktioniert doch 🙂
    Der Fehler war nun an anderer Stelle, also besten Dank für deine Hilfe!!



  • Nunja, womit nimmst Du denn die Adresse von etwas? Richtig, & vorneweg. Und wovon willst Du die Adresse haben? Richtig, *it. Also:

    &*it
    


  • LordJaxom schrieb:

    Nunja, womit nimmst Du denn die Adresse von etwas? Richtig, & vorneweg. Und wovon willst Du die Adresse haben? Richtig, *it. Also:

    &*it
    

    das & und das * heben sich auf, also reicht nur

    it
    

    😉

    mfg Gaste



  • Gaste schrieb:

    das & und das * heben sich auf, also reicht nur

    it
    

    😉

    mfg Gaste

    wenn it ein Pointer ist hast du fast recht, da it hier aber ein std::list<>::iterator ist, ist das sehr wohl nötig.



  • deswegen am besten klammern.... 😉



  • BorisDieKlinge schrieb:

    deswegen am besten klammern.... 😉

    Hä?



  • finds übersichticher bei iteratoren


Anmelden zum Antworten