首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免Q_DECLARE_METATYPE<aCommonType>的重复声明

如何避免Q_DECLARE_METATYPE<aCommonType>的重复声明
EN

Stack Overflow用户
提问于 2012-06-30 03:56:56
回答 1查看 2.8K关注 0票数 8

我的项目由一个链接到两个静态库的应用程序组成。每个库都声明了Q_DECLARE_METATYPE< QUuid >,以便将QUuidQVariant一起使用,这会导致'redefinition of struct QMetaTypeId< QUuid >'错误。

在保持在不同项目中单独使用每个库的能力的同时,正确的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-30 20:54:04

作为一种解决办法,您可以从需要它的实现文件中调用Q_DECLARE_METATYPE宏,而不是从头文件或as the documentation suggests中调用它,而是从每个库中的私有头文件中调用它。

但是因为QUuid将其内容存储为QVariant已经支持的QByteArray,所以您不需要使用Q_DECLARE_METATYPE来完成此操作(仅从Qt 4.8开始):

代码语言:javascript
复制
// QVariant variant;
// QUuid uuid;
variant = uuid.toByteArray();
uuid = variant.toByteArray();

或者用QString (Qt4.8之前的版本)做同样的事情,但效率稍低:

代码语言:javascript
复制
variant = uuid.toString();
uuid = variant.toString();

由于QVariant将在QStringQByteArray之间进行隐式转换,因此您可以毫不费力地混合使用toStringtoByteArray

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

https://stackoverflow.com/questions/11268156

复制
相关文章

相似问题

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