页首Html代码

返回顶部

吐槽C++:C++ 类成员变量初始化 之 初始化带有参数的构造函数 的类成员变量。

 

本来我想写这样的代码:

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++兼容。

 

蛋疼。

 

posted @ 2015-08-04 14:59  ayanmw  阅读(6711)  评论(1编辑  收藏  举报

页脚Html代码