Programming 板


LINE

例: class T; class B { private: int n; bool b; char c; public: B(T& t); ~B(); }; class T { public: PythonTool PyTool; B Obj_b; public: T(); ~T(); }; B::B(T& t) { t.PyTool.RunPyFile(); } 大概是这样 但因为RunPyFile所执行的内容需要B类别的物件 所以在B的建构式根本还没跑完的状况下发会发生存取错误 请问各位高手在这样的情况下要怎麽解决读script的问题? 我问过同学 同学的解决方法是给B一个Init() 原本B的建构是就单纯把值塞0塞NULL 真正初始化交给Init() 但我觉得这样好像有点怪就是了 //===================================== 再说明清楚一点 目前小弟使用VC写一款游戏 T类别是整个游戏的最高阶层管理者 而B类别则是T中的一个成员 功能是处理游戏中的UI部份 读script的目的则是由外部建立相对应的UI 像是按钮在萤幕上的位置、贴图路径、功能(开始新游戏、读取档案、回主选单) 游戏中不能没有UI 所以也不能丢给例外 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 112.104.139.189
1F:推 hilorrk:这是google的coding style 114.36.174.209 09/05 10:34
※ 编辑: NIKE74731 来自: 112.104.139.189 (09/05 10:34)
2F:→ hilorrk:constuctor仅作简单的值初始化 114.36.174.209 09/05 10:35
3F:→ hilorrk:其他的交给Init去做..可以避免一些困扰 114.36.174.209 09/05 10:35
4F:→ loveme00835:写类别前先要考虑的是你 B 跟 T 之间140.121.197.115 09/05 11:33
5F:→ loveme00835:的关系, 如果 B 物件的存在的条件必须140.121.197.115 09/05 11:34
6F:→ loveme00835:是读取成功, 那麽直接写在建构子是无140.121.197.115 09/05 11:35
7F:→ loveme00835:可挑剔的, 如果 B 物件的存在跟读取成140.121.197.115 09/05 11:36
8F:→ loveme00835:功与否没有多大的关联, 就有两种作法140.121.197.115 09/05 11:36
9F:→ loveme00835:1.将 t 物件当成参数传递给成员函式,140.121.197.115 09/05 11:37
10F:→ loveme00835:这时候的 B 比较像是演算法的封装, 读140.121.197.115 09/05 11:38
11F:→ loveme00835:取失败再丢例外就好. 2.把 t 物件再包140.121.197.115 09/05 11:39
12F:→ loveme00835:装成另外一种类别物件, 姑且称他为 A140.121.197.115 09/05 11:40
13F:→ loveme00835:一样是在A建构子读取script, 但是可以140.121.197.115 09/05 11:41
14F:→ loveme00835:多一些属性来标记读取状态提供查询,140.121.197.115 09/05 11:42
15F:→ loveme00835:就像标准库的fstream一样. 除非是简单140.121.197.115 09/05 11:44
16F:→ loveme00835:的给初始值动作, 我觉得写在别的成员140.121.197.115 09/05 11:45
17F:→ loveme00835:函式内既不像物件导向, 也不好管理140.121.197.115 09/05 11:46
※ 编辑: NIKE74731 来自: 112.104.139.189 (09/05 13:23)
18F:→ loveme00835:你可能要改用Aggregation而不是140.121.197.115 09/05 15:29
19F:→ loveme00835:Composition, 像这种读取设定的方式一140.121.197.115 09/05 15:29
20F:→ loveme00835:但发生问题, 应该改采预设的介面, 一140.121.197.115 09/05 15:30
21F:→ loveme00835:个B类别物件建构失败後丢例外, 再改用140.121.197.115 09/05 15:31
22F:→ loveme00835:预设的script去建立另一个B物件140.121.197.115 09/05 15:32
23F:推 loveme00835:如果 RunPyFile 需要用到 B 物件的其140.121.197.115 09/05 15:57
24F:→ loveme00835:他属性, 那 PyTool 应该更适合放在 B140.121.197.115 09/05 15:58
25F:→ loveme00835:类别里面140.121.197.115 09/05 15:58







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

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

TOP