【问题标题】:implement a static method of a class实现一个类的静态方法
【发布时间】:2014-10-16 22:00:30
【问题描述】:

我有一个标题:

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

及其cpp文件:

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

编译时出现错误:

错误 1 ​​错误 LNK2019:未解析的外部符号“public: static class a __cdecl a::Zero(void)” (?Zero@a@@SA?AV1@XZ) 在函数“public: class a __thiscall a:”中引用:SimpleEx(void)" (?SimpleEx@a@@QAE?AV1@XZ)

如何解决这个问题?

【问题讨论】:

  • 尽量不要使用static关键字

标签: c++11 static-methods


【解决方案1】:

从定义中去掉“静态”:

声明:

class a
{
    static int Zero();
}

定义:

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

【讨论】:

  • 这解决了问题。但是为什么我不能使用静态?
  • 将函数声明为静态就足够了。同样的原因你不需要在定义中再次指定访问类型——你说它在标题中是“公共的”,例如,这就足够了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-17
  • 2010-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
相关资源
最近更新 更多