本來我想寫這樣的代碼:
class MatchManager{ public: MatchManager() { } class OnTimerRunFuncHelper{ public: OnTimerRunFuncHelper(const int setTimer) :n_ConfigTimer(setTimer){ n_Timer = 0; } //返回true 則計時器到了 可以進行你的函數了 bool OnTimerCheck(){ n_Timer++; if (n_Timer == n_ConfigTimer){ n_Timer = 0; return true; } return false; } public: const int n_ConfigTimer;//配置最大計時器 int n_Timer;//計時器 int GetTimerCount(){ return n_Timer; } int GetConfigTimerCount(){ return n_ConfigTimer; } }; OnTimerRunFuncHelper t_checkEliminateTimer(2); };
但是C++編譯器(vs2013)提示:
error C2059: 語法錯誤:“常量”
然后我查了一下,居然代碼要這么寫:
class MatchManager{ public: MatchManager() :t_checkEliminateTimer(2) { } class OnTimerRunFuncHelper{ public: OnTimerRunFuncHelper(const int setTimer) :n_ConfigTimer(setTimer){ n_Timer = 0; } //返回true 則計時器到了 可以進行你的函數了 bool OnTimerCheck(){ n_Timer++; if (n_Timer == n_ConfigTimer){ n_Timer = 0; return true; } return false; } public: const int n_ConfigTimer;//配置最大計時器 int n_Timer;//計時器 int GetTimerCount(){ return n_Timer; } int GetConfigTimerCount(){ return n_ConfigTimer; } }; OnTimerRunFuncHelper t_checkEliminateTimer/*(2)*/; };
類似的問題 還有比如 類靜態成員變量的初始化,要在 cpp 文件 單獨寫一行,進行初始化。
我真是感覺C++ 誤人子弟啊。Java 有些東西確實好,但是無法引用到C++中,就是因為這些 落后,但是卻無人(主要是C++編譯器廠商們、以及標准化組織)更改這些東西。
我真的希望有 C++的升級版 C++++ 能擁有Go語言 、java語言等的一些優點,並且兼容C++,但不被C++兼容。
蛋疼。
