c++ - 如何从需要基类指针的函数调用派生类的方法?
问题描述
自从我做了很多 C++ 编码以来已经很长时间了,我已经忘记了很多。可以来帮我指出正确的方向吗?
假设我有以下课程:
class A
{
// Normal Class Stuff
bool doSomething( void);
}
bool A::doSomething( void)
{
return( true);
}
class B : private A
{
// Normal Class Stuff
bool doSomething( void);
void doSomethingElse( void);
}
bool B::doSomething( void)
{
doSomethingElse();
return( A::doSomething);
}
void B::doSomethingElse( void)
{
// Something Else
}
class foo
{
// Normal Class Stuff
void foo_stuff( A * ptr);
}
void foo_stuff( A * ptr)
{
if( ptr->doSomething())
{
// Some Stuff
}
}
有没有办法让我传递一个指向 B 类的指针并让它处理 B::doSomething 而不必重写 foo 类?本质上,我不想修改类 foo,但我需要能够在跳转到 A::doSomething 之前执行 B::doSomethingElse。
谢谢你。
解决方案
基类的dtor()
和 功能必须标明virtual
。
我将 A 类的访问关键字更改为,public
以便可以从类 foo 调用它。
class A
{
public:
virtual bool doSomething(void);
virtual ~A() noexcept;
}
并且建议 B 类覆盖其父函数以附加override
关键字。
class B : public A
{
public:
bool doSomething(void) override;
virtual ~B() noexcept;
}
推荐阅读
- css - 如何更改 mat-toolbar-row 中的样式?
- python - 列表的转换和 lambda 与元组或字典的转换行为不同。是预期的吗?为什么?
- powershell - 为 DB2 配置 PowerShell 命令行时,**$$** 是什么意思?
- python - 从嵌套列表中删除空子列表
- apache-spark - AWS Glue - 用户未初始化火花上下文
- python - 查找靠近分类器决策边界的数据点
- coq - 寻找一些匹配技巧或车队模式
- oop - ColdFusion 2018 Bean-DAO-Manager OOP 逻辑错误
- python - NLTK - 停用词,散列列表
- powershell - 多次创建用户