小编use*_*867的帖子

QT pimpl 从 QObject 继承

在查看 Qt 代码时,我对 pimpl 实现有一个基本问题。以 QWidget 实现为例。

QWidget        ---inherits---> QObject
   |                              |
 contains                      contains
   |                              |
  \ /                            \ /
QWidgetPrivate ---inherits---> QObjectPrivate
Run Code Online (Sandbox Code Playgroud)

现在 QWidget 有两个 QObjectPrivate 实例(通过继承和通过包含)。为什么要这样实施呢?拥有同一个对象的两个实例不是一种开销吗?

inheritance qt private

5
推荐指数
1
解决办法
1734
查看次数

用C++实现事件

在对Internet进行一些研究以获得在C++中实现事件的有效方法之后,我发现了以下方法

  • 接口类 - 应用程序可以覆盖派生类中的虚函数
  • 使用函数指针的正常回调机制
  • 代表使用Boost.function
  • 信号和插槽(在Qt中使用)

我对这些中的每一个的优点和缺点以及何时使用其中的任何一个感到困惑.哪种方法最好,为什么?还有其他解决方案比列出的解决方案更好吗?

c++ events

4
推荐指数
1
解决办法
603
查看次数

检查派生类类型

这是我在设计界面时遇到的问题的一个例子.

我有一个动物类,我从中获得了猫,狗和狮子.现在我有一个函数'feedFood',它接受基类Animal作为参数.根据动物的类型,我应该给动物喂食不同的食物.

那么如何在'feedFood'功能中检查动物的类型.

我能想到3种方法

  • 在基类中添加'AnimalType'枚举,该类在派生类中设置为正确的类型.
  • 在基类中添加虚函数以返回具有动物类型的字符串.在派生类中,返回动物名称的正确字符串.
  • 使用typeid或dynamic_cast检查'feedFood'函数中派生类的类型.

哪种方法最好,还是有其他更好的方法?

c++ derived-class

1
推荐指数
1
解决办法
3314
查看次数

标签 统计

c++ ×2

derived-class ×1

events ×1

inheritance ×1

private ×1

qt ×1