Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用Q_DECLARE_元类型注册许多类是否会产生负面影响?_C++_Qt_Qt5 - Fatal编程技术网

C++ 使用Q_DECLARE_元类型注册许多类是否会产生负面影响?

C++ 使用Q_DECLARE_元类型注册许多类是否会产生负面影响?,c++,qt,qt5,C++,Qt,Qt5,我们正在自动生成大量(1000+)小类的代码 由于我们将在QVariants和/或signals中使用其中一些类,我们正在考虑是否在为所有这些类生成的代码中包含Q\u DECLARE\u元类型宏。我们考虑过的可能替代方案是只为需要宏的类生成宏,或者根据需要在非自动生成的代码中添加宏 //Foo.h class Foo { public: //... }; Q_DECLARE_METATYPE(Foo) 一个问题是通过Q_DECLARE_METATYPE添加数千个类(例如

我们正在自动生成大量(1000+)小类的代码

由于我们将在QVariants和/或signals中使用其中一些类,我们正在考虑是否在为所有这些类生成的代码中包含
Q\u DECLARE\u元类型
宏。我们考虑过的可能替代方案是只为需要宏的类生成宏,或者根据需要在非自动生成的代码中添加宏

//Foo.h
class Foo {
    public:
        //...
};
Q_DECLARE_METATYPE(Foo)

一个问题是通过
Q_DECLARE_METATYPE
添加数千个类(例如性能、内存使用、编译时等)会产生什么(负面)影响。我去过,但到目前为止还没有发现任何相关的东西-有人在这方面有相关的经验/见解吗?

您应该调查在代码中添加数千个模板类专门化所造成的影响,因为
Q\u DECLARE\u METATYPE
扩展到
template struct QMetaTypeId{…}。例如,它肯定会增加二进制文件的大小。请注意,在自动生成的代码未被使用的情况下,可以使用链接时间优化将其删除(假设您的工具链支持)。@vahancho我会尝试,但我一直希望有人已经在这方面有了一些经验(包括你可能会错过的事情,比如“哦,不要这样做,在5894个注册的元对象之后,最旧的注册的元对象将被覆盖”等等)@G.M.我们使用LTCG,因此未使用的模板和函数可能会膨胀我们的.obj和.lib文件,但可执行文件应该精简:)您应该调查在代码中添加数千个模板类专门化所造成的影响,因为
Q\u DECLARE\u METATYPE
扩展为
template struct QMetaTypeId{…}。例如,它肯定会增加二进制文件的大小。请注意,在自动生成的代码未被使用的情况下,可以使用链接时间优化将其删除(假设您的工具链支持)。@vahancho我会尝试,但我一直希望有人已经在这方面有了一些经验(包括你可能会错过的事情,比如“哦,不要这样做,在5894个注册的元对象之后,最旧的注册的元对象将被覆盖”等等)@G.M.我们使用LTCG,因此未使用的模板和函数可能会使.obj和.lib文件膨胀,但可执行文件应该精简:)