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.