//t.h
class Ctest
{
public:
Ctest();
static int GetM();
static int m_int ;
};
//t.cpp
#include "t.h"
int Ctest::GetM()
{
    return m_int;
}
Ctest()::Ctest():m_int(1){};// test.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include "t.h"
#include "iostream.h"
int _tmain(int argc, _TCHAR* argv[])
{
    cout<<Ctest::GetM()<<endl;
    return 0;
}
//编译的提示
test error LNK2019: 无法解析的外部符号 "public: static int __cdecl Ctest::GetM(void)" (?GetM@Ctest@@SAHXZ) ,该符号在函数 _main 中被引用

解决方案 »

  1.   

    这样写没有问题,我觉得你可能是没有将t.cpp文件加入到项目(工程)中。
      

  2.   

    上面的回答很有道理。lnk2019常发生在定义在头文件中的函数找不到实现的情况下。如果t.cpp不在project中,没有被编译,是肯定要出这样的错误的。
      

  3.   

    //t.cpp
    #include "t.h"int Ctest::m_int = 1;int Ctest::GetM()
    {
        return m_int;
    }
    Ctest()::Ctest
    {
    }
      

  4.   

    在构造函数中,
    只能对普通成员初始化,
    不能对静态变量初始化。
    可以单独对静态变量初始化.将
    Ctest()::Ctest():m_int(1){};
    改成
    static Ctest()::m_int=1;
    Ctest()::Ctest(){};