ambiguous overload for ‘operator>>’
-
Moin,
folgendes Problem: Ich möchte einen oeprator >> definieren für meine Klasse figure:Fehlermeldung:
|8|error: ambiguous overload for ‘operator>>’ in ‘std::cin >> polyline’|// deklaration class figure{ public: figure(); void addPoint(point p); void insertAt(point p, int pos); // soll die Punkte direkt aus dem CIN-Stream einlesen friend std::istream & operator>> ( std::istream & stream, figure& F); private: std::list<point> fig; std::list<point>::iterator it; } ; // definition von operator >> std::istream& operator>> ( std::istream & stream, figure& F){ std::string input; stream>>input; std::cout<<input; return stream; }
Jetzt meckert der Compiler (GCC) aber ständig rum, wenn ich versuche das simple
figure polyline s; cin>> s;
zu machen... Warum ?? Ich verstehe die Fehlermeldung nnicht wirklich. Ich hab doch extra nichts im Std-namespace rumgewurschtelt.
-
Hast du
<string>
eingebunden?
-
Hi,
ja, hab ich...Aber das Thema hat sich erledigt. ich mache es jetzt ein wenig anders. Der Ansatz war dumm.
Ich hänge gerade bei einem anderen Problem, vielleicht kann ich das noch kurz in den Thread packen, ist nur eine Verständnisfrage:
Ich will nen vallarray als member in einer klasse haben. Wie muss ich diese Klasse initialisieren ? Also wie muss so ein Constructor aussehen? Ich muss ja irgendwie die Größe des Valarrays irgenwann mal übergeben - wo?
-
Hast du mal etwas von der Initialisierungsliste gehört?
Dort kannst du die Member Initialisieren. Also auch dein valarray.
-
In der Referenz zu
std::valarray
siehst du die unterstützen Konstruktoren. Einer davon hat folgende Signatur:explicit valarray (size_t n);
Die Grösse kannst du also gleich in der Konstruktor-Initialisierungsliste deiner Klasse mitgeben. Je nach Bedarf verleihst du dem Konstruktor
MyClass::MyClass()
noch Parameter, die du dann weiterreichst.class MyClass { public: MyClass(); private: std::valarray<double> MyValues; }; MyClass::MyClass() : MyValues(42) // <- das ist die Initialisierungsliste { }
-
ach ja, danke - genau so ging das...