C++ - Kopie ein stream-Objekt

Ich habe experimentiert mit C++, und ich habe auf ein problem stoßen, dass ich nicht weiß, wie zu lösen.

Im Grunde, habe ich entdeckt, dass Sie nicht kopieren können-streams (siehe Warum das kopieren von stringstream ist nicht erlaubt?), und das gilt auch für Objekte, die 'wrap' Sie. Zum Beispiel:

  • Ich erstelle eine Klasse ein Datenelement vom Typ stringstream.
  • Erzeuge ich ein Objekt dieser Klasse.
  • Ich versuchen, um das Objekt zu kopieren, z.B. "TestObj t1; TestObj t2; t1 = t2;"

Diese den Fehler verursacht C2249:

'std::basic_ios<_Elem,_Traits>::operator =' : Nein, Barrierefreier Weg, um private member deklariert virtual base 'std::basic_ios<_Elem,_Traits>'

Also meine Frage ist: wie kann ich (vorzugsweise leicht) Objekte kopieren, die Mitglieder-Daten des Typs *stream?

Vollständige Beispiel-code:

#include <iostream>
#include <string>
#include <sstream>

class TestStream
{
public:
    std::stringstream str;
};

int main()
{
    TestStream test;
    TestStream test2;
    test = test2;

    system("pause");
    return 0;
}

Vielen Dank im Voraus.

UPDATE

Habe ich es geschafft dieses problem zu lösen, Dank der Antworten unten. Was ich getan habe ist, erklären die stream-Objekte einmal und dann verweisen Sie einfach auf Sie mit Zeigern in der wrapper-Objekte (z.B. TestStream). Das gleiche gilt für alle anderen Objekte, die privaten copy-Konstruktoren.

  • Da Sie scheinen Ihre Hausaufgaben gemacht haben, wird die verknüpfte Frage. Warum benötigen Sie dieses Verhalten? Lesen/schreiben?
InformationsquelleAutor Matt Larsen | 2011-10-26
Schreibe einen Kommentar