2016-08-21 1 views
0

Ich habe eine Basisklasse 'a', die eine virtuelle Funktion enthält, in der abgeleiteten Klasse 'b' überlade ich diese Funktion. Jetzt habe ich noch eine Klasse 'c', die nur von 'b' abgeleitet ist, und ich habe einen Zeiger auf Klasse c. Aber ich bin nicht imstande herauszufinden, wie ich diese Funktion vom 'c' Klassenzeiger aufrufen soll. Hilf mir, vielleicht ist es dumm, aber ich stecke hier fest.Wie ein abgeleiteter Klassenzeiger die Basisklassenfunktion aufrufen kann

Antwort

1
struct A { virtual void foo() {} }; 
struct B: A { void foo() override {} }; 
struct C: B {}; 

auto main() -> int 
{ 
    C o; 
    C* p = &o; 

    p->foo(); // Calls B::foo 
    p->A::foo(); // Calls A::foo 
} 
0

Wenn c die Zeiger auf C sind:

c->A::method(); 
+0

Danke für die Hinweise und genauer zu sein, die ich auf Qt arbeitete (C++ GUI-Bibliothek) und dass ich eine Verbindungsfunktion der ist wie folgt connect ("C-Klassenzeiger", SIGNAL (A-Klasse FUNC), ein anderer PTR, SLOT (func)); jetzt benutze ich nur diese Funktion und es gibt mir den Fehler, dass FUNC nicht in C-Klasse ist gibt es eine Lösung für diese ... –

Verwandte Themen