zoukankan      html  css  js  c++  java
  • 【转】静态变量和静态函数导致的问题

    1.静态函数内部使用了外部非静态成员变量导致error C2228: left of '.push_back' must have class/struct/union type。
    外部定义    typedef list<int>    intList;
        intList m_lstChannelInfos;
    静态函数使用了该变量

    2.静态变量未初始化导致link2001出错。


    静态数据成员的使用方法和注意事项如下:

      1、静态数据成员在定义或说明时前面加关键字static。

      2、静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下:

        <数据类型><类名>::<静态数据成员名>=<值>

      这表明:

            (1) 初始化在类体外进行,而前面不加static,以免与一般静态变量或对象相混淆。

      (2) 初始化时不加该成员的访问权限控制符private,public等。

      (3) 初始化时使用作用域运算符来标明它所属类,因此,静态数据成员是类的成员,而不是对象的成员。

      3、静态数据成员是静态存储的,它是静态生存期,必须对它进行初始化。

      4、引用静态数据成员时,采用如下格式:

       <类名>::<静态成员名>

    如:
    class Myclass
    {
    public:
    Myclass(int a, int b, int c);
    void GetNumber();
    void GetSum();
    private:
    int A, B, C;
    static int Sum;
    };

    int Myclass::Sum = 0;

    一般的对象不能赋值的也要声明如
    static XChannelFactory m_sChannelFactory ;
    XChannelFactory XChannelFactory::m_sChannelFactory;

    原文

  • 相关阅读:
    Linux入门
    Linux和VMware
    vue中select的使用以及select设置默认选中
    Django ModelFrom组件
    Django登录(含随机生成图片验证码)注册实例
    Django组件---Django请求生命周期和中间件
    Python3之使用Crypto
    ORM大结局
    ORM多表查询下
    Pycharn破解补丁激活
  • 原文地址:https://www.cnblogs.com/2018shawn/p/9370292.html
Copyright © 2011-2022 走看看