有没有办法来调用C ++类以外的基础功能?(Is there a way to call a bas

2019-08-06 13:14发布

这个问题是相似的,但有关调用从类里面的函数: 我可以调用基类的虚函数,如果我重写呢?

在这种情况下,你会指定Base::function() ,而不是function() ,它将调用重写的定义。

但是,有没有办法做到这一点之类的么? 我的类没有定义拷贝构造函数,所以我无法弄清楚怎么投的基类:

Base( derived_object ).function()

是适当的事情在这里投& derived_objectBase* ,然后调用->function()

感谢您的见解。

Answer 1:

尝试derived_object.Base::function();



Answer 2:

我相信语法:

derived_ptr->Base::function();

工作得很好。 虽然我真的怀疑你为什么会想这样做的功能,这不是你的类的一部分。 特别是,如果function恰好是一个虚函数。

为什么它是一个有问题的想法的原因是,你正在做什么,那就是使用该符号取决于你的类的继承层次。 此外,函数通常覆盖有原因的。 而你通过使用此语法获得解决这一问题。



Answer 3:

你可能想使用指针到一个类的成员函数。 那些给你需要不同的基类的功能映射到指针的能力,并用它作为一个变量或函数参数的能力。

对于一个指向成员函数的语法看起来像

class Base
{
public:
    virtual bool Function();
    virtual bool OtherFunction();
};

typedef bool (Base::*)() BaseFunc;

注意事项使用这些东西的名单是一英里长有很多网上关于如何使用他们(大部分的答案是“不”)。 然而,他们这样做给你明确结合和调用基类成员函数的方式。



文章来源: Is there a way to call a base function outside of the class in C++?
标签: c++ oop