实际上,我当时是在尝试理解c ++中的一段代码并遇到了这个片段,这是Packet被设置为新的数据类型吗?什么是“ homeDeliv”和“ pickUp”。是在这里定义它们还是在别的地方定义它们,只是在这里使用?
我是C ++语法的新手。请帮助...
template< typename Pac > struct Packets;
template<> struct Packets< homeDeliv > { static const unsigned ID = 0; };
template<> struct Packets< pickUp > { static const unsigned ID = 1; };
最佳答案
这些是模板Packets
的显式专业化。
每当您使用Packets< homeDeliv >
时,都将使用该实现。
非显式专业化使用默认模板。
struct homeDeliv {};
struct foo {};
template< typename Pac > struct Packets { static const unsigned ID = 42; } ;
template<> struct Packets< homeDeliv > { static const unsigned ID = 0; };
//.....
Packets<homeDeliv> x;
assert ( x.ID == 0 );
Packets<foo> y;
assert ( y.ID == 42 );
Packets<int> z;
assert ( z.ID == 42 );
关于c++ - 在C++中使用模板和结构的困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19513814/