iterator <zeiger>
-
hallo
ich habe eine Klasse
class Frau { public: void gebe_alle_aus(void); string eigen_name; vector <Mann*> man_list; vector <Mann*>::iterator man_it; };void Frau::gebe_alle_aus(void) { man_it = man_list.begin(); string vgl_name; for (unsigned int i = 0; i < man_list.size(); i++) { vgl_name = ((*man_it)->Frau); //hier scheint der cout << vgl_name << endl; //fehler zu sein man_it++; } }Fehler:
error C2679: Binärer Operator '<<': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'std::string' akzeptiert (oder keine geeignete Konvertierung möglich)
1> c:\program files\microsoft visual studio 9.0\vc\include\ostream(653): kann 'std::basic_ostream<_Elem,_Traits> &std::operator <<<char,std::char_traits<char>>(std::basic_ostream<_Elem,_Traits> &,const char *)' sein
1> with/edit pumuckl: ich hab mal die BB-Codes aktiviert, damit das mit den cpp-Tags auch fruchtet

-
Welche Header hast du eingebunden? Für die Ausgabe von std::string sind <iostream> und <string> vonnöten.
-
ich hatte #include <string> vergessen. ich dachte immer der string ist in iostream drinnen und dazu muss man das namespace std einbinden?
-
hansigarten2 schrieb:
ich hatte #include <string> vergessen. ich dachte immer der string ist in iostream drinnen und dazu muss man das namespace std einbinden?
Das muss nicht sein, kann aber duchaus sein, dass dein Compiler das schluckt. Allerdings ist es nur Standardkonform, dass, wenn du
std::stringbenutzt, dann musst du auch#include<string>machen.Den Namensraum kannst du entweder durch ein
using namespacebekannt machen, oder durch die explizite Namensraumangabe durch den::-Operator
-
Kleiner Tipp: Der Imperativ von "geben" lautet "gib".
Ist leicht zu merken: Es heißt ja Imperativ und nicht Emperativ.
(ebenso "hilf, iß, ...." aber nicht "mirk Dir das!"
)Gruß,
Simon2.
-
iß
Das halte ich für ein GerIcht, ähh.. Gerücht.

-
thx 4 help
-
hansigarten2 schrieb:
ich hatte #include <string> vergessen. ich dachte immer der string ist in iostream drinnen und dazu muss man das namespace std einbinden?
<iostream> deklariert eventuell std::string, allerdings sind nur im <string> auch alle zugehörigen Funktionen mit dabei. Die Frage mit dem Namespace std klingt irgendwie seltsam. Nur für den Fall: cout usw. sind wie string im namespace std zu finden. Solltest du diesen Namespace nicht in irgendeiner Weise erwähnt haben, dann lässt das darauf schließen, dass du eventuell <iostream**.h**> statt <iostream> eingebunden hast. Sollte das der Fall sein, korrigiere das am Besten gleich und entsorge das Buch in dem noch <iostream.h> steht. (Der Header ist seit 11 Jahren veraltet udn wird inzwischen von einer ganzen Reihe von Compilern nicht mehr unterstützt)