c++ - 在 C++ 中使用类层次结构时是否应该避免向下转型?

标签 c++ inheritance downcast

假设我正在编写一个与项目一起使用的应用程序,并根据项目的类型公开不同的功能。我有不同类型项目的类层次结构:

class AbstractProject
{
};

class ProjectA : public AbstractProject
{
};

class ProjectB : public AbstractProject
{
};

class ProjectC : public AbstractProject
{
};

现在,我计划将一个 AbstractProject *_currentProject 指针作为应用程序主类中的一个成员,在启动时弹出一个对话框并根据选择执行:

_currentProject = new ProjectB(); // e.g.

稍后,我将不得不向下转换指向特定类型的指针,以利用特定于不同项目的功能。不知何故,这让我感到不安。有更好的方法吗?

最佳答案

更好的方法是在基类中定义纯虚方法,然后在派生类的重载中实现所有特定功能。然后调用该方法。

关于c++ - 在 C++ 中使用类层次结构时是否应该避免向下转型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4657655/

相关文章:

c++ - 结构中固定大小的数组是否需要在 C++ 析构函数中显式销毁?

c++ - 从 QByteArray 转换为 double 组

c++ - 对重载函数 find_first_not_of 的模糊调用

C++ : Automatically run function when derived class is constructed

Javascript继承和方法覆盖

Java向下转型

java - 在父类(super class)构造函数中将 'this' 转换为子类

c++ - 这是什么错误: "no appropriate default constructor available"?

php - 如何访问特征中的类成员(或获得类似的行为)?

c# - 使用继承的自定义 IDataReader 从 IDbCommand 读取