体系结构的未定义符号x86_64与静态类成员出错

时间:2016-11-29 01:17:47

标签: c++ static x86-64

我一直在收到错误代码,我在这里看到很多错误代码,但大多数答案似乎都对我没有的头文件问题发表评论(我不这么认为?)。 sortKey是一个私有的静态成员,我相信我的setter和getters会出错。

 bool Student::setSortKey(int userKey) {
   sortKey = SORT_BY_LAST;
   if(!validSortKey(userKey))
      return false;
   sortKey = userKey;
   return false;
}
static int getSortKey() { return sortKey; }

错误......

Undefined symbols for architecture x86_64:
  "Student::sortKey", referenced from:
      Student::setSortKey(int) in main.o
      Student::getSortKey() in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我已经考虑了一段时间了,我无法弄清楚这是错的。我是否需要使用Student ::(即类名)引用setter中的sortKey?类中的所有方法也被定义为static。任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:3)

假设你有一个像

这样的声明
class Student {
    // ...
    static int sortKey;
};

Student::sortKey文件中提供.cpp的定义:

int Student::sortKey = SORT_BY_LAST;