Witam. Mam pewien problem z dostępem do funkcji publicznej jednej klasy, a konkretnie do jej adresu w pamięci. W komentarzach wyjaśnię o co chodzi:
class Klasa1 {
public:
void PozadanaFunkcja() ;
};
class Klasa2 {
private:
/* jak widać Klasa2 zawiera w sobie obiekt Klasa1 */
Klasa1 ObiektKlasy1 ;
public:
/* akcesor zwraca referencję do powyższego obiektu */
Klasa1 & getObiektKlasy1 () { return ObiektKlasy1 ; }
};
class Klasa3 {
private:
/* wskaźnik na funkcję typu void */
void (*wskNaFunkcje)() ;
public:
/* konstruktor w którym pobierana jest funkcja do WskNaFunkcję */
Klasa3( Klasa2 & refDoKlasy2 ) {
/* DLACZEGO TO NIE DZIAŁA ?
this->wskNaFunkcje = refDoKlasy2.getObiektKlasy1().PozadanaFunkcja ; */
/* DLACZEGO TO TEŻ NIE DZIAŁA ?
this->wskNaFunkcje = refDoKlasy2.getObiektKlasy1().PozadanaFunkcja() ; */
/* I TO TEŻ ?
this->wskNaFunkcje = & ( refDoKlasy2.getObiektKlasy1().PozadanaFunkcja ) ; */
/* I JESZCZE TO?
this->wskNaFunkcje = & ( refDoKlasy2.getObiektKlasy1().PozadanaFunkcja() ) ; */
/* kończą się pomysły.. Wydaje się że błędnie używam operatorów, kierowałem się tym że normalnie
wskaźnik na funkcję deklaruje się tak:
void funkcja() { ; }
void (*wsk)() = &funkcja ;
*/
}
};
Po wklejeniu powyższego kodu do edytora, wszystko powinno się kompilować, chyba że odkomentuje się zakomentowane instrukcje i właśnie to jest problemem..
Jak mam się odwołać do funkcji publicznej należącej do klasy pierwszej posiadając referencję do klasy drugiej, która ma w sobie instancję klasy pierwszej.
Może inaczej : nie jak mam się odwołać do funkcji, ale jak mam zdobyć jej adres aby móc korzystać ze wskaźnika na funkcję?
Dzięki za pomoc. Pozdrawiam!