本来我想写这样的代码:
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++兼容。
蛋疼。