首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不能在模板类中使用Q_OBJECT?

问为什么不能在模板类中使用Q_OBJECT?
EN

Stack Overflow用户
提问于 2020-07-21 18:25:45
回答 1查看 787关注 0票数 1

还有一个类似的问题,这里正在寻找解决办法,还有一个很好的指南这里,它描述了Qt.But中的元对象系统,它不能直接解释为什么不可能在元对象系统中使用模板类,这是一个恼人的限制。

有人知道为什么吗?

EN

Stack Overflow用户

回答已采纳

发布于 2020-07-21 19:37:19

在标准Qt中是不可能的,因为对于Qt,对于这些类,moc需要能够预处理类并生成所需的元数据结构。这是在编译之前完成的,对于模板类来说,这意味着类型还没有真正定义。

然而,有些事情是可能的:

  • QObject可以有模板化的方法,只要它们没有标记为可调用、时隙或信号。
  • 您可以创建继承QObject派生类的模板类。它不能拥有Q_OBJECT宏或添加信号、插槽或属性,但它可以是一个有用的技巧,例如,创建一个模板化的通用QAbstractItemModel。
  • 你可以用Verdegris代替moc。它使用基于模板的替代方法来生成与moc兼容的代码。这也应该允许模板化的QObjects。

*当然,没有什么是不可能的.如果其他一切都失败了,您也可以实现moc自己提供的所有东西.

票数 4
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63020840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档