在什么地方给静态成员对象赋初值?
我的静态成员对象是一个CStringArray类对象。
我希望在使用静态成员函数对这个对象操作之前,Array中已有预设的初值,
如何做到?

解决方案 »

  1.   


    知道静态成员与全局变量的相似之处就可以了。
    比如,你可以写一个Init的静态成员函数专门用于初始化之,在程序的开始运行处,当然就你这种情况是尽可能早的调用这个Init来完成初始化,如果你使用MFC可以在App类的InitInstance函数中调用之完成初始化。
      

  2.   


    使用构造函数当然也可以,但是每次定义一个该类的实例就会引发静态成员的重新初始化,那么这个成员成为静态的就失去意义了。因为那样的化,去掉static效果是完全一致的。
    之所以使用静态是为了让该变量的生命周期能够跨越不同的类实例。
      

  3.   

    class A
    {
      static int m;
    };
    class A::m=数值;main()
    {
    ...
    }
      

  4.   

    class A
    {
      static int m;
    };
    class A::m=数值;main()
    {
    ...
    }
      

  5.   


    Chice_wxg() 给出的是标准的静态成员初始化方法。
    但是对于一些比较复杂的静态成员变量给出一个对应的初始化静态函数更有灵活性。因为你可以在想重新初始化时调用它,并且保持很好的语义。
      

  6.   

    就是大家说的这些问题,
    如使用静态函数操作这个对象,那么不调用构造函数,
    对于class A::m=数值,则m只能是简单数据,
    我的m是一个Array,赋初值要用.Add(),所以也不能用!看来只能令写一个静态函数INIT,专门赋值?
    没有其实办法吗?我就是想问有没有类似
    class A::m=数值;的赋初值方法?
    但对m的赋值要调用m的函数
      

  7.   

    在类的实现文件.cpp中给类的静态成员变量赋初值。
    如:
    int CYourClass::YourStaticmember = 12;
      

  8.   

    我的意思是,静态变量是对像,比如CStringArray类对像
    对CStringArray类对像在哪儿用Add?