3

我有一个用 Qt 库用 C++ 编写的 GUI。对于我的应用程序,我使用了 TreeView 对象。为了使这个对象的重用变得容易,我制作了一个模板类,我的 QObjects 可以从中继承。由于 moc 不能与模板类一起使用,我制作了这样的类:

class Tree : public QObject, public TreeTemplate<TreeType, TreeItemType>
{
     Q_OBJECT
};

这样只允许 Tree 类使用 moc(TreeTemplate 不继承 QObject 或使用 Q_OBJECT 宏),同时获得模板的好处。

我的问题是,在退出我的应用程序时崩溃,没有失败(即使我调用 exit 并跳过 QApplication 清理)。我认为生成的 moc 类可能存在问题,它们的“静态元对象”

我不能使用 valgrind,因为__ASM__它无法处理。:-(

有谁知道我使用继承自模板类的模板化 Qt 类 (+moc) 的设计是否会导致此问题?

崩溃出现在:退出后的 libc.so 中。

4

1 回答 1

1

AFAIK,你的方法行不通。

在 C++ 预处理器之前运行,这moc就是QObject模板类不起作用的原因 - 预处理器尚未生成类。您正在对类进行模板化,因此moc关于该类的数据将与在预处理器期间从该类创建的任何模板类的签名不匹配。

于 2012-05-08T12:38:07.747 回答