我一直在收到错误代码,我在这里看到很多错误代码,但大多数答案似乎都对我没有的头文件问题发表评论(我不这么认为?)。 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。任何帮助都将非常感激。
答案 0 :(得分:3)
假设你有一个像
这样的声明class Student {
// ...
static int sortKey;
};
在Student::sortKey
文件中提供.cpp
的定义:
int Student::sortKey = SORT_BY_LAST;