1

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

class AbstractProject
{
};

class ProjectA : public AbstractProject
{
};

class ProjectB : public AbstractProject
{
};

class ProjectC : public AbstractProject
{
};

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

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

稍后,我将不得不向下转换指向特定类型的指针,以利用特定于不同 Project-s 的功能。不知怎的,这让我感到不安。有没有更好的方法来做到这一点?

4

4 回答 4

2

是的,您应该尽可能使用虚拟方法。

于 2011-01-11T12:37:08.967 回答
2

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

于 2011-01-11T12:37:41.193 回答
1

命令模式和访问者模式可能都适用于此。您应该自己决定哪个更适合您的情况。

http://en.wikipedia.org/wiki/Command_pattern

http://en.wikipedia.org/wiki/Visitor_pattern

于 2011-01-11T12:40:04.967 回答
0

在纯 OO 中,您应该拥有每个人建议的虚拟方法。但是,如果您仍然需要使用特定的成员函数,请尝试使用其中一种设计模式,可能是命令或访问者甚至是装饰器......

于 2011-01-11T12:42:38.797 回答