C_and_CPP 板


LINE

我自行写了一个如下的范例 红色注明的地方,是我一加上去之後 compile就会告知我Construct的部份出了问题,我不懂原因是什麽,如下: #include <iostream> #include <typeinfo> using namespace std; template <class AnyType = int> class Base { private : AnyType codX; AnyType codY; public : Base(); Base(AnyType, AnyType); Base(const Base<AnyType> &); void showXY() { cout <<"(" <<codX <<", " <<codY <<")" <<endl; }; }; template <class AnyType> Base<AnyType>::Base() { if (typeid(AnyType) == typeid(float)) { codX = 0; codY = 0; } else if (typeid(AnyType) == typeid(double)) { codX = 0.3; codY = 0.5; } else if (typeid(AnyType) == typeid(char)) { codX = 'A'; codY = 'B'; } else if (typeid(AnyType) == typeid(string)) { codX = "S"; codY = "H"; } else { codX = 0; codY = 0; } } int main() { Base<double> Ob; //Error !? system("pause"); return 0; } 我不懂为什麽这样写不会过 他的Error如下: cannot convert `const char[2]' to `double' in assignment 我在Construct中条列式分开,判断的部份不会判断到string的部份才对 更何况我放入的型态是double 所以我看不出来compile不会过得原因是什麽? 还请各位指点一下,谢谢 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.118.54.246 ※ 编辑: godman362 来自: 122.118.54.246 (03/15 17:25)
1F:推 chrisdar:codX = 'S'; codY = 'H'; 03/15 17:29
2F:→ legnaleurc:你该用偏特化,而不是typeid这种用途有限的东西 03/15 17:49
3F:推 chrisdar:总算看懂他要什麽了 http://src.wtgstudio.com/?a8S964 03/15 17:50
4F:→ legnaleurc:执行期是不会跑到,可是编译期一定会编译到那段 03/15 17:50
5F:→ godman362:可以请问一下何谓偏特化吗? 不了L大的意思 03/15 18:47
6F:→ godman362:另外想请问C大,万一我不只有要判断这些型态怎麽办 03/15 18:48
7F:→ godman362:这样不就要写非常多个case吗 03/15 18:48
8F:推 legnaleurc:C大贴的写法就是特化(sorry我讲错了 03/15 19:02
9F:→ legnaleurc:单一参数没什麽好偏特化的,囧) 03/15 19:02
10F:→ legnaleurc:你现在的写法还不是要写很多个case = = 03/15 19:03
11F:推 chrisdar:你得到他了 RTTI我都用在子物件因为参数传递被转型成父 03/15 19:08
12F:→ chrisdar:物件的时候还原其原来的面貌 03/15 19:08
13F:→ godman362:l大抱歉,我的意思是说要写很多的construct 03/15 19:17
14F:→ godman362:关於C大您用的地方不是很了解,请问有范例可以借参考吗 03/15 19:18
15F:→ godman362:另外想问,为什麽我原本的写法会出问题呢? 03/15 19:19
16F:推 chrisdar:Ctor如果要针对不同型别给予不同初始值的话就=您所理解的 03/15 19:19
17F:→ chrisdar:http://ppt.cc/k8Ai C++ Gossip: 执行时期型态资讯(RTTI 03/15 19:21
18F:→ godman362:我之前的确是参考C大您所给予的网页 03/15 19:24
19F:→ godman362:先谢过C大以及L大的指点,感谢 03/15 19:26
20F:推 jerohands:MSDN: http://0rz.tw/yzckG http://0rz.tw/SquMm 03/16 17:37
21F:→ jerohands:string是class,因此把typeid(string)这一行注解掉 03/16 17:38
22F:→ jerohands:答案就对了 03/16 17:38







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP