如何不使用虚拟继承?

发布于 2024-11-19 11:48:38 字数 296 浏览 1 评论 0原文

我正在制作一个win32 api程序。我首先创建了一个名为 WinClass 的基类,并像其他十几个类一样继承了它。现在我需要从继承自基类 WinControlWinHandler 的两个类创建一个派生类。因为我打算从最初的十几个派生类中创建更多的派生类,所以我'就像从 WinClass 继承的每个类一样,必须使用虚拟继承。那么有没有办法使用虚拟继承来做到这一点?

I am making a win32 api program. I first created a base class called WinClass and inherited like a dozen other classes from it. Now I need to create a derived class from two classes inherited from base class WinControl and WinHandler.Since I intend to make many more derived classes out of the original dozen, I'll have to use virtual inheritance on like every class inherited from WinClass.So is there any way to do this without using virtual inheritance?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南巷近海 2024-11-26 11:48:38

了解如何完全避免过度使用继承。例如,阅读这篇文章

http://berniespiration.com/ software/inheritance-is-evil-and-must-be-destroyed/

学习如何按照您想要的方式完成工作(正确使用继承)的一个好的开始是“设计”一书模式”:

http://c2.com/cgi/wiki?DesignPatternsBook

Learn how to avoid overuse of inheritance at all. For example, read this article

http://berniesumption.com/software/inheritance-is-evil-and-must-be-destroyed/

A good start to learn how to get things done the way you want it (with the correct use of inheritance) is the book "Design Patterns":

http://c2.com/cgi/wiki?DesignPatternsBook

绅刃 2024-11-26 11:48:38

我首先创建了一个名为 WinClass 的基类,并像其他十几个类一样继承了它。

这是你的第一个问题。如果说 WPF 教会了我们什么的话,那就应该是继承不一定是 GUI 设计的最佳模型。

那么有没有什么方法可以在不使用虚拟继承的情况下做到这一点?

是的:不要从 WinClass 派生 WinControlWinHandler。你还没有说这些的作用,所以我无法提供任何具体的建议。确实,看起来您需要的是“有一个”关系,而不是继承带来的“是一个”关系。

另外,类名不需要使用粗体。只需使用 StackOverflow 提供的代码标签即可。也没有必要用粗体SHOUT

I first created a base class called WinClass and inherited like a dozen other classes from it.

And there's your first problem. If WPF has taught us anything, it should be that inheritance is not necessarily the best model for GUI design.

So is there any way to do this WITHOUT using virtual inheritance?

Yes: don't have WinControl and WinHandler be derived from WinClass. You haven't said what these do, so I can't offer any specific advice about them. Really, it seems like what you need is a "has a" relationship rather than the "is a" relationship that inheritance brings.

Also, there's no need to use boldface for class names. Just use the code tags that StackOverflow provides. Nor is there a need to SHOUT in bold-face.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文