Is there a way to call a base function outside of the class in C++?
这个问题是类似的,但是关于从类内部调用函数:如果我重写了一个基类的虚函数,我可以调用它吗?
在这种情况下,您将指定
但是有没有一种方法可以在课堂之外做到这一点?我的类没有定义复制构造函数,因此我无法确定如何将其强制转换为基类:
1 | Base( derived_object ).function() |
把
谢谢你的洞察力。
试试
我相信语法:
1 | derived_ptr->Base::function(); |
工作很好。尽管我真的很怀疑为什么你要在一个不属于你的类的函数中这样做。尤其是当
这是一个值得怀疑的想法的原因是,使用这个符号所做的一切都取决于类的继承层次结构。此外,函数通常由于某种原因被重写。你可以用这个语法来解决这个问题。
您可能想使用指向类成员函数的指针。它们使您能够根据需要将不同的基类函数映射到指针,并能够将其用作变量或函数参数。
指向成员函数的指针的语法如下
1 2 3 4 5 6 7 8 | class Base { public: virtual bool Function(); virtual bool OtherFunction(); }; typedef bool (Base::*)() BaseFunc; |
使用这些东西的注意事项列表有一英里长——网上有很多关于如何使用它们的信息(大多数答案是"不要")。但是,它们确实为您提供了一种明确绑定和调用基类成员函数的方法。