我在一个头文件中声明如下:
class a
{
public:
    static void Set();
    static int  Get();
protected:
    static int mem;
};
在控制台程序中,我应该在什么地方初始化类的静态成员?我在MAIN()的前面试着初始化编译无错误,可是连接有错误:
console2.obj : error LNK2001: unresolved external symbol "protected: static int  child1::tuation" (?tuation@child1@@1HA)
console2.obj : error LNK2001: unresolved external symbol "public: static int __cdecl child1::GetStaticMember(void)" (?GetStaticMember@child1@@SAHXZ)

解决方案 »

  1.   

    在头文件对应的类实现文件cpp中加入以下的语句
    static int a::mem ;
      

  2.   

    在实现文件里面加入:
    static int a::mem = 0;
      

  3.   

    非模板类里面的static应该在对应的实现文件里面进行初始化,如果在主执行程序里面写了一个带有  static 变量 的 模斑,可以在MAIN()前,指明模斑参数后初始化该变量。
      

  4.   

    不行啊各位大侠,我在类的实现文件中,是这样写的:
    void child1::Set()
    {
        tuation=100;
    }
    int child1::Get()
    {
        return tuation;
    }
    可是不行啊
      

  5.   

    static int a::tuation;
    void child1::Set()
    {
        tuation=100;
    }
    int child1::Get()
    {
        return tuation;
    }
      

  6.   

    static int child1::tuation;
    void child1::Set()
    {
        tuation=100;
    }
    int child1::Get()
    {
        return tuation;
    }
      

  7.   

    static int child1::tuation;
    void child1::Set()
    {
        tuation=100;
    }
    int child1::Get()
    {
        return tuation;
    }