C++:如何从外部调用父类函数

C++: How to call a parent class function from outside

本文关键字:外部调用 父类 类函数 C++      更新时间:2023-10-16

我有:

class A{
    public:
        virtual void foo();
};
class B : public A{
    public:
        void foo();
};
B *ptr = new B();

我想使用"ptr"指针直接调用A的foo()

当我尝试时

(A*)ptr->foo();

它仍然调用B版本的CCD_ 2。如何调用A的版本?

这可能吗?有哪些替代方案?非常感谢。

使用::作用域解析形式命名函数时,会调用命名函数,就好像它不是虚拟的一样。

ptr->A::foo();

您需要公开您的函数。您只需进行以下更改即可做到这一点:

class A{
    public:
        virtual void foo();
};
class B : public A{
    public:
        void foo();
};

如果不这样做,这些功能将自动成为私有的,并且无法从"外部"访问。