Was ist hier falsch ? (istringstream)
-
Hallo, also folgendes rufe ich in meinem main() auf :
#include "kvm.h" #include <fstream> #include <sstream> #include <string> using namespace std; int main () { ifstream InputStream("Eingabe.txt"); string Input; getline(InputStream,Input); istringstream InputStringStream(Input); KVM Test(InputStringStream); // Hier meckert er return 0; }
und hier die dazugehörige Klasse :
#include "person.h" #include<sstream> class KVM { public: ~KVM(void); private: Person Kind; Person Vater; Person Mutter; KVM(void); public: KVM(istringstream istrstr_Zeile); };
Und als Fehlermeldung bekomme ich :
error C2664: 'KVM::KVM(std::istringstream)' : cannot convert parameter 1 from 'std::istringstream' to 'std::istringstream'
-
Hi,
wuerde den Konstruktor so aussehen lassen:
[cpp]
KVM(istringstream **&**istrstr_Zeile);[/cpp]Wuerde mal darauf tippen, dass es daran liegt
mfg
v R
-
nun meckert der nicht mehr aber das richtige gibt der mir nicht aus in dem überladenen Konstruktor soll er folgendes tun :
string name; short zahl; istrstr_Zeile >> name >> zahl; Kind.SetName(name); Kind.SetGebDat(zahl); istrstr_Zeile >> name >> zahl; Vater.SetName(name); Vater.SetGebDat(zahl); istrstr_Zeile >> name >> zahl; Mutter.SetName(name); Mutter.SetGebDat(zahl); Kind.ausgeben(); // Hier soll nur zu Testzwecken ausgegeben werden Mutter.ausgeben(); // welchen Inhalt er eingelesen hat Vater.ausgeben(); // aber da gibt der nur Muell aus
Jemand eine Idee ?
-
Zeig uns doch mal dein setNane(), und das ausgeben()
-
So also hier die beiden SET-Methoden und die Ausgabe
void Person::SetName(string str_Name) { Name = str_Name; } void Person::SetGebDat(short s_GebDat) { GebDat = s_GebDat; } void Person::ausgeben(void) { cout << Name << GebDat << endl; }
in der Eingabedatei steht eine Zeile mit folgendem Inhalt :
Otto1957 Willi1924 Erna1934
und als Ausgabe erhalte ich :
Otto1957-13108
Otto1957-13108
Otto1957-13108aber das ist nun nicht wirklich was er ausgeben soll.
Verstehe übrigens auch nicht warum ich im überladenen Konstruktor den Paramter als Referenz übergeben soll....
-
na weil du den istringstream nicht wirklich kopieren willst. du willst die informationen daraus nur einmal auslesen, oder.
Frage: Darf man istringstream kopieren, gibt es dafuer einen kopierkonstruktor?
-
Frage: Darf man istringstream kopieren, gibt es dafuer einen kopierkonstruktor?
Nein. Copy-Ctor und Copy-Assignment-Op der Basisklasse basic_ios sind private. Die C++ Standardstreams können demzufolge weder kopiert noch einander zugewiesen werden.