Programming 板


LINE

※ 引述《[email protected] (㊣"MORTAR─COMBAT─")》之铭言: : ※ 引述《jiannrong ( )》之铭言: : > 请教一下,这里我会产生两个物件, : > 只是,我希望在建构子内,看到物件的名称, : > 请问该如何做呢? : > 我使用this,可是却显示出记忆体位址.. : 标准C++好像没有物件名称这回事吧 你要自己做进去 : 比如说 自己做一个base class叫做framework 在里面把物件名称定义好 : 然後所有的class都继承framework : 不做就没有 : 他不像Java设计的时候就把这项也规定进去… 基本上有两个办法,不过都不 portable,也不一定有效, 您可以试试看你的环境可不可以弄出来: 1. typeid(*this).name() typeid() 会传回对应於 object 的的 type_info 物件, 而 type_info.name() 即是取 class 名。 不过,这个「名」是 implementation-defined, 不同的 compiler 有不同的作法,跑出来的名字, 也不一定能够让人看得懂。 但如果看得懂的话,你就可以写一些程式去 parse 这个字串, 转成你真正想要储存的格式。 2. 使用 __PRETTY_FUNCTION__ GCC 有提供一个叫做 __PRETTY_FUNCTION__ 的 predefined macro, 就好像 __FILE__ 与 __LINE__ 一样, __PRETTY_FUNCTION__ 会回传目前函式的「漂亮且完整的名称」, 稍加 parse 一下即可取出 class 名的部份。 其他 compiler,有的可能会有类似的东西存在, 不过您就得自己翻翻文件了。 在 C99 standard 里,也有个 __func__,可以回传函式的名称,如: int show_my_name(char unused) { printf("%s", __func__); // 印出 show_my_name return 0; } 因为没有 name decoration 的问题存在,所以 C99 的 __func__ 可以是 portable 的[1],各家 compiler 都必须产出 "show_my_name"。 不过,若要取 C++ 的 class 名,__func__ 就会很杂乱了。 [1] 当然,也是有尚未支援 C99 的 compiler 就是了,如 VC6。 -- 我的微笑,坚持要有鼻子。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.250.103.118 ※ 编辑: JeffHung 来自: 60.250.103.118 (07/29 10:05)







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灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP