[C++] problem bei übergabe von pointer auf selbst geschriebene klasse

wolf

Lieutenant
Registriert
Nov. 2002
Beiträge
675
solli leute,
also es ist folgendes:
ich habe eine selbstgeschriebene klasse, von der ich in main() ein objekt erzeuge. nun will ich in der memberfunktion einer anderen klasse dieses objekt benutzen lassen. jedoch bekomme ich beim kompilieren, folgende meldung:
Code:
16 mask.cpp request for member of non-aggregate type before '(' token
kann es vielleicht an der art liegen, wie ich die klasse fax deklariert habe?

der code sieht folgendermaßen aus:

main:
Code:
int main(int argc, char *argv[])
{

    fax fax1("crypt2_fax.pbm");
    fax1.open_file();
    fax1.display_fname(); // hier gehts noch!
    maske.add_fax(&fax1);
}

die funktion, die den pointer auf das objekt bekommen soll:
Code:
void mask::add_fax(fax *newfax)
{
    *newfax.display_fname();
}

mfg
der wolf



[edit]

is ok, als referenz gehts!

[/edit]
 
Zuletzt bearbeitet:
Code:
void mask::add_fax(fax *newfax)
{
    *newfax.display_fname();
}


Das ist falsch. Der Memberzugriff wird vor der Dereferenzierung ausgewertet.
Also entweder schreibst Du das so:
Code:
void mask::add_fax(fax *newfax)
{
    (*newfax).display_fname();
}
Oder du benutzt gleich den -> Operator
Code:
void mask::add_fax(fax *newfax)
{
    newfax->display_fname();
}


Wenn Du mit Pointern arbeitest, impliziert die Schnittstelle, dass auch ein 0-Zeiger übergeben werden darf. D.h. entweder auf 0-Zeiger prüfen, oder aber mit Referenzen arbeiten, wenn man auf jeden Fall ein gültiges Objekt erwartet.
 
Zurück
Oben