Hallo zusammen,
ich hätte da eine Frage bezüglich dem typedef von Klassen für entsprechende Zeiger. So zum Beispiel in dieser Form:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
|
typedef class CKlasse
{
// KONSTRUKTOR, DESTRUKTOR, MEMBER, METHODEN ...
// Überladene Operatoren
CKlasse& operator /= (const CKlasse&);
} CKlasse, * PCKlasse;
|
Es geht also darum, einen Zeiger-Datentyp der Klasse zu erhalten (PCKlasse). Nun könnte die Implementierung des Operators so aussehen:
|
C-/C++-Quelltext
|
1
2
3
4
5
|
// Klassen-Methode (bzw. Operator)
CKlasse& CKlasse::operator /= (const CKlasse& k)
{
return *this *= (*ExterneFunktion(&k));
}
|
Wobei die Externe Funktion so aussehen könnte:
|
C-/C++-Quelltext
|
1
2
3
4
5
|
// Eine nicht explizit zur Klasse gehörende Funktion
PCKlasse ExterneFunktion(PCKlasse ptr)
{
// modifiziere ptr und liefere das Ergebnis (sprich den Argument-Zeiger) auch als Rückgabewert
}
|
Jetzt geht es jedoch gar nicht um spezielle Funktionen oder Methoden, sondern um den Umstand, dass mir der Compiler die Fehlermeldung in der operator-Implementation ausspuckt, dass const CKlasse * nicht in const PCKlasse umgewandelt werden kann (beim Aufruf von ExterneFunktion()), wobei ich jetzt allerdings dachte, dass es das Selbe sei. Würde ich alle PCKlasse(n) mit CKlasse* ersetzen, so läuft wieder alles einwandfrei. Wird jedoch ExterneFunktion() mit einem PCKlasse-Argument in der main()-Funktion aufgerufen, so akzeptiert der Compiler dies ebenfalls. Nur bei Klassen-Methoden will er da scheinbar nicht so recht. Vermute mal, dass ich da etwas Grundsätzliches von typedef nicht so ganz verstanden habe. Vielleicht könnt ihr mir helfen. Danke!