odwołanie klasy do samej siebie

0

Mam klasę lista_klawiszy która dziedziczy po wxListBox. Chcę aby klasa ta w pewnej funkcji składowej, wywołała funkcję Set na samej sobie. Funkcja Set(const wxArrayString) przyjmie w argumencie jeden z składników klasy. W zależności jaki argument podamy do funkcji składowej lista_klawiszy (np int= 1, 2 lub 3) funkcja Set zostanie wykonana przyjmując w argumencie pierwszą drugą lub trzecią wxArrayString które są składnikami lista_klawiszy.

Tylko czy da się tak zrobić? W funkcji klasy lista_klawiszy wykonać na niej samej funkcję z klasy po której dziedziczy?

0

Nie wiem czy o to Ci chodzi, ale jedziemy, kod:

class Base {
public:
    void method(Base*) { ; }  
};
 
class Derived : public Base {
public:
    void anotherMethod() { method(this); }
};
 
int main()
{
    Derived myClass;
    myClass.anotherMethod();
    return 0;
}

http://ideone.com/3POm1C

Co sie tutaj dokladnie dzieje:

  1. Podczas dziedziczenie, w skrocie mowiac "kopiujemy" metody/skladowe klasy bazowej, wiec nasza klasa wyglada tak:
class Derived {
public:
    void method(Base*);
    void anotherMethod();
}
  1. W metodzie anotherMethod() wywolujemy po prostu skladowa klasy, ktora odziedziczylismy:
{ method(this); }
  1. Poniewaz metoda ta przyjmuje wskaznik, wiec mozemy bezpiecznie rzutowac ja "w gore", tzn. kazdy wskaznik do klasy pochodnej, mozna rzutowac na wskaznik klasy bazowej (to samo sie dzieje w przypadku referencji), jest to rzutowanie niejawne (implicit).

1 użytkowników online, w tym zalogowanych: 0, gości: 1