gpt4 book ai didi

c++ - 在 C++ 中使用模板和结构的混淆

转载 作者:太空宇宙 更新时间:2023-11-04 15:44:02 25 4
gpt4 key购买 nike

实际上,我试图理解一段 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/

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