Hallo!
In meinem C+±Buch habe ich gelesen, wenn ich vor eine Memberfunktion einer Klasse friend schreibe, wird diese Memberfunktion zu einer globalen Funktion, die jedoch auf Variablen und Funktionen im Privat-Bereich der Klasse in der die ursprüngliche Memberfunktion steht zugreifen darf. Ich habe dazu ein kleines Beispiel geschrieben. Allerdings bekomme ich die Fehlermeldung, dass die Private Variable nicht deklariert sei. Ein wenig hat der Compiler schon recht, da sie weder global noch lokal in der ursprünglichen Memberfunktion deklariert ist, aber in der Klasse!
So sieht das Headerfile aus:
#include
class Klasse2{
public:
Klasse2(void);
friend void GlobaleFunktion(void);
~Klasse2(void);
private:
int MeineVariable;
};
Und so das CPP-File:
#include „Klasse2.h“
Klasse2::Klasse2(void){
MeineVariable = 10;
}
void GlobaleFunktion(void){
// Hier tritt der Fehler auf und ich weis nicht warum
MeineVariable += 2;
printf(„Neuer Wert der privaten Variablen: %d\n“, MeineVariable);
}
Klasse2::~Klasse2(void){
}
Weiss da mir vielleicht jemand einen Rat? habe ich etwas übersehen? Das Projekt habe ich als neue Konsolenanwendung mit MFC-Unterstützung erstellt.
Wenn ich die Friend-Funktion nur eine Meldung ausgeben lasse und dann die Funktion wie eine global definierte aus der main-Funktion heraus aufrufe, funktioniert es auch. Nur eben der nicht deklarierte Bezeichner.
Gruß Christian