本来我想写这样的代码:
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++编译器(vs)提示:
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++兼容。
蛋疼。