Zeiger an Funktion übegeben

lgorse

Mitglied
Hallo,

ich beiße mir gerade an einem Problem die Zähne aus, was bestimmt ganz einfach zu lösen ist, bei dem ich aber leider keinen Durchblick habe ;)

Ich habe eine Funktion, der ich einen Zeiger auf eine ifstream-Instanz übergebe:

Code:
int getNext(int now, ifstream *datei) {
  datei.seekg(0, ios::beg);
  
  // weiterer Code

  return nw;
}

die Funktion rufe ich folgendermaßen auf:

Code:
ifstream dat_ein;
int act;

dat_ein.open("datei");

act = getNext(act, &dat_ein);

Wenn ich diesen Code mit Dev-C++ compilieren will, bekomme ich folgende Fehlermeldungen:

Z:\***\main.cpp In function `int getNext(int, std::ifstream*)':
34 Z:\***\main.cpp `seekg' has not been declared
34 Z:\***\main.cpp request for member of non-aggregate type before '(' token
40 Z:\***\main.cpp `eof' has not been declared
40 Z:\***\main.cpp request for member of non-aggregate type before '(' token
41 Z:\***\main.cpp `getline' is not a type
41 Z:\***\main.cpp request for member of non-aggregate type before '(' token

Den Code, der die Fehlermeldungen in Zeile 40 & 41 verursacht habe ich nicht gepostet, da er fast identisch mit Zeile 34 ist.

Wie könnte ich den Fehler beseitigen?

Lg,
lgorse
 
Der untere Codeteil ist in Ordnung

Beim oberen: Wenn man Pointer einfac mit dem Variablennamen anspricht, ist die Adresse gemeint.
Um den Wert (in dem Fall das Objekt von ifstream) dahinterr anzusprechen, muss beim Zugriff ein * davor.

dH:
C++:
(*datei).seekg(0, ios::beg);
oder ein bisschen weniger Schreibarbeit, bewirkt komplett das Gleiche:
C++:
datei->seekg(0, ios::beg);

Gruß
 
Danke für die Hilfe. Ich hab schon länger nicht mehr mit C++ gearbeitet und die eine oder andere Kleinigkeit hab ich da vergessen ;)
 
Zurück