referenz auf datei übergeben?
-
hallo, wie kann ich ne referenz auf eine datei übregeben?
so gehts leider nicht:static ifstream infile; // Global in einer Datei. void ( ifstream& in ) { infile = in; }
denn es kommt die meldung:
operator =": Kein Zugriff auf private Member, dessen Deklaration in der std::basic_streambuf<_Elem,_Traits>-Klasse erfolgte.
-
"Nicht gehen" tut die Zuweisung eines Streams. Eine Referenz übergibst Du doch bereits mit dem Parameter "in".
Was hast Du denn genau vor?
-
ich habe einige funktionen in einer datei die auf ein und den selben stream zugreifen müssen. ich möchte den stream nicht durch alle funktionen als parameter durchschleifen.
diese datei fungiert als ein modul, dieser datei soll ein geöffneter stream übergeben werden.
-
Das tust du ja mit dem in Parameter. Du kannst einen stream einfach nicht kopieren, daher gehe ich einmal davon aus, dass infile vom Typ
std::ifstream
ist, anstattstd::ifstream&
.
Obwohl du das auch weglassen kannst und einfachin
benutzen.
-
drakon schrieb:
Das tust du ja mit dem in Parameter. Du kannst einen stream einfach nicht kopieren, daher gehe ich einmal davon aus, dass infile vom Typ
std::ifstream
ist, anstattstd::ifstream&
.
Obwohl du das auch weglassen kannst und einfachin
benutzen.ja, aber dann muss ich ja jeder funktion den parameter übergeben. das wollte ich verhindern.
-
Wenn das denn wirklich sein muss, dann mach halt eine globale Variable, benutzt ein Singleton o.ä.
-
ich wolltja nix mit klassen machen extra.
-
opmjlö schrieb:
ich wolltja nix mit klassen machen extra.
Dann musst du ifstream wohl auch weglassen und C schreiben. C++ handelt nunmal immer irgendwo mit Klassen.
opmjlö schrieb:
ich habe einige funktionen in einer datei die auf ein und den selben stream zugreifen müssen. ich möchte den stream nicht durch alle funktionen als parameter durchschleifen.
diese datei fungiert als ein modul, dieser datei soll ein geöffneter stream übergeben werden.Man kann einer Datei nichts übergeben, und in einer Datei gibts keine Funktionen. Wenn du mit Datei eine .cpp-Datei meinst, dann kannst du in der Datei zwar Funktionen deklarieren, aber der Datei immer noch nichts übergeben. Klassische Lösung für dein Problem wäre, die Funktion zu einer Klasse mit entsprechenden Methoden zu bündeln und den Objekten der Klasse jeweils eine Referenz auf den Benötigten ifstream zu verpassen.
-
opmjlö schrieb:
ich habe einige funktionen in einer datei die auf ein und den selben stream zugreifen müssen. ich möchte den stream nicht durch alle funktionen als parameter durchschleifen.
diese datei fungiert als ein modul, dieser datei soll ein geöffneter stream übergeben werden.Das erklärt aber nicht, weshalb du eine Zuweisung brauchst. Wie gesagt sind Referenzen oder Zeiger das, was du suchst.