自定义类型的思考
最近在群里面看到这样一个语句:typedef typename T::value_type _type; 我的第一反应认为这是一个自定义类型,没错这确实是一句自定义类型,但这和我们平常见到的自定义类型又有不同,特别是T::value_type 这块会让大多数人很不解。其实他的意义就是:这个T必须含有value_type这个成员,也就是说T必须是个类或者命名空间,如果还不明白的请继续往下看。
CCustomTypeEx<map<int,char*>,int,char*> pair_ex(1989,"hansen");// ok
总结:关于CCustomType<map,int,char*> pair_那个问题,其实在一开始我就偷换掉了概念,前面那条红色句子就理解不完全,单单认定pair_.data是个pair类型,坚信pair是可以在构造后赋值的,没错常规的pair 例如std::pair确实可以这样做, 但别忘记了CCustomType中关键的一句typedef typename classType::value_type custom_type;也就是说这个value_type一定要是classType的成员,所以pair_.data 应该是map::value_type类型,进一步就是pair<const int,char*>类型.
又是一个3点啊 ......收工.....睡觉.....
- 6楼yujie_v昨天 17:11
- 模板技巧,如果不学的话还是不要看了。
- 5楼hejingyuan63天前 09:38
- 学习了
- 4楼jiandingzhe3天前 08:05
- 对我非常有用。模板果然变化万千啊!
- 3楼lishehe3天前 08:01
- 学习
- 2楼liutengteng1303天前 07:59
- 支持。
- 1楼han_yankun20093天前 07:57
- 拜读了