C_and_CPP 板


LINE

class objA{ public: void func(){ static bool firstcall=0; … } } 写程式时, 旗标宣告成 static 很方便, 但是当他是放在类别函式里面就怪怪的! 当我宣告两个以上的类别 objA a1,a2; a1.func() a2.func() "static"会互相影响到 为了解决这问题只好把 firstcall 宣告成私有成员。 可是这样对往後维护也不好… 请问有可以宣告在函式内, 却又互相独立的方法吗 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 39.14.8.80
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1451316579.A.7FF.html
1F:→ longlongint: member variable 12/29 01:03
2F:→ Caesar08: 这应该问你,你当初为甚麽要宣告成static吧 12/29 10:42
3F:推 CaptainH: 为什麽private对维护不好? 12/29 12:20
4F:→ Caesar08: 为甚麽一定要宣告在函式内呢? 12/29 22:55
5F:→ noodleT: 因为那个变数从头至尾只在该func使用,如果宣告在class成 12/29 23:05
6F:→ noodleT: 员中,那麽:1、必须在建构子初始化。2、原本可以写成 co 12/29 23:05
7F:→ noodleT: nst function 的函式,也要改成 nonconst 12/29 23:05
8F:→ noodleT: 而且,写一般函式时,我们也不会把旗标写成全域变数吧 12/29 23:07
9F:推 LPH66: C++ 有个关键字叫 mutable 可以解决你的问题 2 12/29 23:17
10F:推 Caesar08: 推楼上,直觉想到这个,但这应该不是他要的 12/29 23:19
11F:→ Caesar08: 我看你的叙述,感觉不用static就可以达到这些 12/29 23:20
12F:→ Caesar08: 但你用static,应该是第一次呼叫func的object才有这资料 12/29 23:20
13F:→ noodleT: 我会查看看的,谢谢 12/29 23:21
14F:→ Caesar08: 在data member加一个pointer呢?12/29 23:22
15F:→ noodleT: 不懂「第一次呼叫func才有资料」12/29& 23:23
16F:→ Caesar08: 变数名不是叫firstcall吗?12/29 23:26
17F:→ Caesar08: 应该会对第一次呼叫func的object给予某些资料吧12/29 23:26
以上面举例是这样没错, 又其他范例: class objB{ //变换矩阵 double transform[16]; //上一次的矩阵值 double preTranform[16]; //原始座标 double vertex[3n]; //新座标 double newVertex[3n]; // void multi(double *matrx) { 将变换矩阵乘上 matrx } double* GetNewVertex() { 如果变换矩阵值没变 (等於preTransform), 回传newVertex; 否则重算并回传newVertex } } 像上面这种情况, preTransform 和 newVertex 也是只在一个func中使用, 而且原本成员就有类似的名称 transform 和 vertex ※ 编辑: noodleT (27.242.128.158), 12/29/2015 23:57:41
18F:→ noodleT: 其他开发者,万一在class中直接使用newvertex,而不是透 12/30 00:05
19F:→ noodleT: 过getnewvertex(),那他所计算的值就不保证是最新的座标 12/30 00:05
20F:→ noodleT: 位置了!但偏偏变数名称有「new」 12/30 00:05
21F:→ noodleT: 也许是我自己太多虑,自找麻烦== 12/30 00:11







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

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

TOP