gpt4 book ai didi

c++ - C++中模板结构创建的区别

转载 作者:行者123 更新时间:2023-11-28 01:59:48 27 4
gpt4 key购买 nike

有什么区别

#define Q_DECLARE_METATYPE(TYPE)                                        \
template <> \
struct QMetaTypeId< TYPE > \
{ \
... \
}; \

#define Q_DECLARE_METATYPE(TYPE)                                        \
template <TYPE> \
struct QMetaTypeId \
{ \
... \
}; \

?

最佳答案

第二个定义了一个名为QMetaTypeId 的模板类,其中包含为TYPE 提供的模板参数。一旦声明了这一点,就可以为不同的模板参数定义 QMetaTypeId 的特化。

第一个为模板参数为TYPEQMetaTypeId 模板类定义了一个特例。它假设已经存在一个可以专门化的模板类。

每个例子:

Q_DECLARE_METATYPE2(typename T) //primary template
Q_DECLARE_METATYPE1(int) //specialization for int

QMetaType<int> a; //uses the specialization
QMetaType<float> b; //uses the primary template

第二个版本看起来很奇怪,而第一个版本可以用来让库的用户更容易地为他们自己的类型声明库模板类的特化。

关于c++ - C++中模板结构创建的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39980184/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com