template问题

huatian008 2008-02-22 12:29:26
template<typename
T> class IsClassT
{ private:
typedef char One;
typedef struct { char a[2]; } Two;
template<typename C> static One test(int C::*);
template<typename C> static Two test(...);
public:
enum { Yes = sizeof(IsClassT<T>::test<T>(0)) == 1 };
enum { No = !Yes };
};
请高手详细解释一下:
template<typename C> static One test(int C::*);
template<typename C> static Two test(...);
sizeof(IsClassT<T>::test<T>(0))
谢谢!
...全文
108 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
HelloDan 2008-02-22
  • 打赏
  • 举报
回复
没什么好解释的啊。在书上看看模板的内容行了。
  • 打赏
  • 举报
回复
当T是class类型的时候 就能够将0转化成一个成员指针
不是类型的时候就只能匹配...参数的函数了,
这返回值类型不一样,于是sizeof返回的结果就是不一样了
taodm 2008-02-22
  • 打赏
  • 举报
回复
楼主,买本C++ Primer好好补补基础知识吧,"指向成员的指针"。
huatian008 2008-02-22
  • 打赏
  • 举报
回复
没有看见书上说关于这个的啊
这个是什么意思int C::*,以前没有看到过这种表述啊
hong8292 2008-02-22
  • 打赏
  • 举报
回复
书上不是说得很明白了吗?
必要的话可以参考一下c++ primer关于重载的资料。
huatian008 2008-02-22
  • 打赏
  • 举报
回复
楼上说的不知那么回事,我就是在学习模板,以上的内容是不会的摘出来请把家帮帮忙
相关推荐
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-02-22 12:29
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下