我有一个使用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的生成类可能存在问题,其中包含“static-meta-objects”
我不能使用valgrind,因为使用__ASM__
它无法处理。 : - (
有没有人知道我使用模板化的Qt类(+ moc)设计继承了模板化的类会导致这个问题吗?
退出后崩溃在:libc.so。
答案 0 :(得分:1)
AFAIK,你的方法不起作用。
{C}预处理器之前运行moc
,这就是为什么QObject
和模板化的类不起作用的原因 - 预处理器还没有生成类。您正在对类进行模板化,因此有关该类的moc
数据将与预处理器期间从其创建的任何模板类的签名不匹配。