Operatorenüberladung und/oder automatische Typenumwandlung
-
Nur du siehst ja an der Fehlermeldung, daß er eindeutig den Falschen Kostruktor aufruft...
Hast Du schon einen
NLStream(const char * szString)
ausprobiert?
Immerhin gilt dieser Text zwischen den "" Ja als literal(?)-konstante wenn ich mich recht entsinne!
-
hmm literal sagt mir im Moment gar nichts...
also ich hab jetzt mal:
... char szStr[]="bla"; const char *pStr = szStr; NLStream stream(pStr) ...
selber Fehler.. Desweiteren würde ich das auch gerne so implementieren können, dass ich den CTor mit NLStream("bla") aufrufen kann....
gruß
-
Arggggggggggghs... Hat sich erledigt... Ein programmiertechnisch unabhängeriger Fehler von mir
also funktioniert jetzt alles eine letzte Frage hätte ich noch...
NLStream &operator+=(NLStream &pStream) { this->Store(pStream.m_acData,pStream.m_iSize); this->SetEnd(); return (*this); }
für
NLStream stream("bl"), sndstream("ah"); stream+=sndstream;
hab ich allerdings Zeiger muss ich:
NLStream *stream = new NLStream("bl"), *sndstream = new NLStream("ah"); (*stream)+=(*sndstream);
schreiben.
Kann ich jetzt noch irgendwas überladen, um mir das Referenzieren der Pointer zu sparen ??
gruß
-
Nein.
-
Nstream &operator += (Nstream *a, Nstream *b) { return *a+=*b; }
-
davie schrieb:
Nstream &operator += (Nstream *a, Nstream *b) { return *a+=*b; }
Obfuscated C++?
-
Wieso? Eine der wenigen guten Merkmale der C++ Syntax, ist die Möglichkeit sich kompakt auszudrücken.
(soll man natürlich nicht übertreiben, aber hier ist es doch eindeutig)
-
Shade: ja, da sollte man drauf hinweisen.
-
Wie meinst du das?
Mal was anderes, wozu muss man das überhaupt erst extra schreiben? Der Compiler könnte das doch automatisch generieren, wenn man eh schon '+' definiert hat.
-
ich mein nur, dass (ein code sagt mehr als 1000 worte)
NLStream *x = new NLStream, &y = *x; //kurz und bündig //folgendes: NLstream foo(x += &y);
das ist nicht, was man erwartet.