Kein Element von



  • Hallo!

    Hab wieder ein mir unerklärliches Problem:

    // Datei header.h
    #include <list>
    
    class A
    {
    private:
      func();
      std::list<int> m_Liste;
    };
    
    // Datei Quellcode.cpp
    #include "header.h"
    
    A::func()
    {
      m_Liste::iterator i;  // <-- da kommt der Fehler M_Liste sei kein Element ovn A. Warum?
    }
    


  • Du hast bei func() den Rückgabewert vergessen.

    Außerdem soll das wohl std::list<int>::iterator und nicht m_Liste::iterator heißen. m_Liste ist kein Typ.



  • Danke, jetzt geht es. Nohc ne Frage:

    struct S
    {
      char* Text;
      DWORD Color;
    }
    
    void func()
    {
      std::list<S> liste;
      std::list<S>::iterator i;
      for(i = liste.begin(); i != liste.end(); i++)
        TextOut(hWnd, 10, 10+ 10 * i, i.Text, sizeof(i.Text));
    
    }
    

    So geht es nicht, wie komme ich nun an Text aus S ran?



  • Hi,

    zuerst mal ist es besser statt 'char *' einen std::string zu nehmen. Wenn Du bei dem 'char *' bleiben willst, must Du statt 'i.Text' 'i->Text' nehmen.

    grüße Con@n



  • Hm, mal drüber nachdenken...
    belegt string mehr Speicxherplatz als char* ?

    Ansonsten funktioniert es erstmal gut so:)



  • Maxi2 schrieb:

    belegt string mehr Speicherplatz als char* ?

    Sicherlich. Es wird aber wohl nicht darauf ankommen, da Du eh unter Windows programmierst. Wenigstens brauchst Du Dich nicht mehr um die Speicherzuweisung kümmern, und kannst so ungewollte Fehler vermeiden.

    grüße Con@n



  • ... Hm. habs mal mit string versucht, weiß aber nciht, wie ich das an Textout übergeben soll

    Textout erwartet ja char* und ncith string. Gibs da nicht sone Funktion die char* zurückliefert?

    Unsd noh ne Frage:

    Wie krieg ich die Anzahl von Elementen in einer Liste raus?
    list<>::size gibt ja size_t oder so zurück, das geht nciht so:

    if(m_ListAusgabe.size > 10)
      ...
    

    Wie macht man das?
    Schonaml danke im voraus. In der Hilfe find ich mich nciht zurecht mit basic string und sowas...



  • Versuchs mal mit Klammern bei dem Funktionsaufruf, size ist nämlich eine Methode, keine Variable.

    Und die Methode(!) c_str liefert Dir einen char *.

    MfG Jester



  • const char*



  • 🙄 hast recht... war etwas ungenau. Wenn man's streng nimmt könnte man auch sagen falsch.


Anmelden zum Antworten