派生类指针如何调用基类函数

Posted

技术标签:

【中文标题】派生类指针如何调用基类函数【英文标题】:how a derived class pointer can call the base class function 【发布时间】:2016-08-21 03:48:47 【问题描述】:

我有一个基类“a”,其中包含一些虚函数,在派生类“b”中,我重载了该函数。现在我还有一个仅从 'b' 派生的类 'c' 并且我有一个指向类 c 的指针。但是我无法弄清楚如何从 'c' 类指针中调用该函数。帮帮我,也许它很愚蠢,但我被困在这里。

【问题讨论】:

【参考方案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

【讨论】:

【参考方案2】:

如果c 是指向C 的指针:

c->A::method();

【讨论】:

感谢您的提示,更具体地说,我正在研究 Qt(c++ gui 库),并且我有一个类似这样的连接函数 connect(“C 类指针”,SIGNAL(A类 FUNC) , 另一个 ptr , SLOT(func)) ;现在我只是在使用这个 func,它给了我 FUNC 不在 C 类中的错误,有什么解决方案吗...

以上是关于派生类指针如何调用基类函数的主要内容,如果未能解决你的问题,请参考以下文章

为啥指向基类的派生类指针可以调用派生类成员函数? [复制]

如何从指向基类类型的指针调用派生类函数(C++)

关于C++基类、派生类的引用和指针

基类指针指向派生类对象&派生类指针指向基类对象

python 怎样调用基类函数

使用具有抽象基类指针并调用派生类函数的映射