小编dvv*_*vrd的帖子

使用static_assert检查Q_OBJECT宏

如果给出类型I的声明不包含Q_OBJECT宏,我有一些有趣的需要显示编译错误.我找到了一种不好的方法.实际上它重复了Qt开发人员做同样伎俩的想法:

template<typename T>
void checkForQObjectMacro()
{
    reinterpret_cast<T *>(0)->qt_check_for_QOBJECT_macro(*reinterpret_cast<T *>(0));
}
Run Code Online (Sandbox Code Playgroud)

这很好用,但它确实给出了奇怪的错误信息.我想展示一条可读的消息.一种方法是使用static_assert构造.但我不知道如何实现Q_OBJECT宏存在的静态验证条件.也许有人可以提出一个漂亮的黑客?也非常感谢任何想法.

c++ qt static-assert qobject c++11

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

标签 统计

c++ ×1

c++11 ×1

qobject ×1

qt ×1

static-assert ×1