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

时间:2012-08-29 16:33:57

标签: c++ inheritance pointers virtual

我有:

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

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

B *ptr = new B();

我想使用' ptr'直接致电A foo() (A*)ptr->foo(); 指针。

当我尝试

foo()

它仍然会调用B&#39}的{{1}}版本。我该如何调用A&C的版本?

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

2 个答案:

答案 0 :(得分:19)

当您使用::范围分辨率表单命名函数时,可以调用命名函数,就好像它不是虚拟的一样。

ptr->A::foo();

答案 1 :(得分:2)

您需要公开您的功能。您只需进行以下更改即可完成此操作:

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

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

如果不这样做,这些功能将自动保密,并且无法从“外部”访问。