2014-10-16 72 views
0

我有一个头:实现类的静态方法

class a 
{ 
public: 
    a(); 
    static int Zero(); 
    void SimpleEx(); 
} 

和CPP文件:

错误1个错误:

a() { } 
static int a::Zero() {return 0;} 
void SimpleEx() { cout << a::Zero(); } 

编译时出现错误LNK2019:函数“public:class a __thiscall a :: SimpleEx(void)”中引用的未解析外部符号“public:static class a __cdecl a :: Zero(void)”(?Zero @ a @@ SA?AV1 @ XZ) (?SimpleEx @一@@ QAE? AV1 @ XZ)

如何解决这个问题?

+0

尽量不要使用static关键字 – smac89 2014-10-16 22:07:56

回答

1

以 “静” 了定义:

声明:

class a 
{ 
    static int Zero(); 
} 

定义:

int a::Zero() 
{ 
    return 0; 
} 
+0

这解决了这个问题。但为什么我不能使用静态? – 2014-10-16 22:09:49

+1

将函数声明为静态就足够了。同样的原因,您不需要再次在定义中指定访问类型 - 您在头文件中声明它是“公开”的,例如,它就足够了。 – Ian 2014-10-16 22:11:38

相关问题