[问题] 介于static和private的宣告?

楼主: noodleT (面T)   2015-12-28 23:29:36
class objA{
public:
void func(){
static bool firstcall=0;

}
}
写程式时,
旗标宣告成 static 很方便,
但是当他是放在类别函式里面就怪怪的!
当我宣告两个以上的类别
objA a1,a2;
a1.func()
a2.func()
"static"会互相影响到
为了解决这问题只好把 firstcall
宣告成私有成员。
可是这样对往后维护也不好…
请问有可以宣告在函式内,
却又互相独立的方法吗
作者: longlongint (华哥尔)   2015-12-29 01:03:00
member variable
作者: Caesar08 (Caesar)   2015-12-29 10:42:00
这应该问你,你当初为什么要宣告成static吧
作者: CaptainH (Cannon)   2015-12-29 12:20:00
为什么private对维护不好?
作者: Caesar08 (Caesar)   2015-12-29 22:55:00
为什么一定要宣告在函式内呢?
楼主: noodleT (面T)   2015-12-29 23:05:00
因为那个变量从头至尾只在该func使用,如果宣告在class成员中,那么:1、必须在建构子初始化。2、原本可以写成 const function 的函式,也要改成 nonconst而且,写一般函式时,我们也不会把旗标写成全域变量吧
作者: LPH66 (-6.2598534e+18f)   2015-12-29 23:17:00
C++ 有个关键字叫 mutable 可以解决你的问题 2
作者: Caesar08 (Caesar)   2015-12-29 23:19:00
推楼上,直觉想到这个,但这应该不是他要的我看你的叙述,感觉不用static就可以达到这些但你用static,应该是第一次呼叫func的object才有这资料
楼主: noodleT (面T)   2015-12-29 23:21:00
我会查看看的,谢谢
作者: Caesar08 (Caesar)   2015-12-29 23:22:00
在data member加一个pointer呢?变量名不是叫firstcall吗?应该会对第一次呼叫func的object给予某些资料吧
楼主: noodleT (面T)   2015-12-30 00:05:00
其他开发者,万一在class中直接使用newvertex,而不是透过getnewvertex(),那他所计算的值就不保証是最新的座标位置了!但偏偏变量名称有“new”也许是我自己太多虑,自找麻烦==

Links booklink

Contact Us: admin [ a t ] ucptt.com