zoukankan      html  css  js  c++  java
  • 吐槽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++兼容。

    蛋疼。

  • 相关阅读:
    OEA框架学习:缓存
    2012年 博文整理
    技术支持经验总结
    OEA框架学习:元数据设计
    安装后新建Android出现“AndroidManifest.xml 系统找不到指定的文件”解决方案
    Android控件学习笔记之 GridView(实现九宫格)
    获取url地址中主机的域名
    C# 语音读取字符串
    JSON省市联动
    MOTO Droid手机自定义本地铃声设置方法
  • 原文地址:https://www.cnblogs.com/ayanmw/p/4702044.html
Copyright © 2011-2022 走看看