2016-11-29 3 views
1

Я продолжаю получать код ошибки, который я видел здесь много, но большинство ответов, похоже, комментируют проблемы с заголовочными файлами, которых у меня нет (я не думаю ?). sortKey - частный статический член, и я получаю ошибку в своих сеттерах и получателях, которые, как я полагаю.Неопределенные символы для архитектуры x86_64 Ошибка со статическим членом класса

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) 

Я думал об этом некоторое время, и я не могу понять, что это такое, что это неправильно. Нужно ли мне ссылаться на sortKey внутри сеттера, используя Student :: (это имя класса)? Все методы в классе также определены как статические. Любая помощь будет очень оценена.

+2

Задайте лучшие вопросы: [MCVE]! –

ответ

2

предположим, что вы имеете заявление как

class Student { 
    // ... 
    static int sortKey; 
}; 

Обеспечить определение Student::sortKey в файле .cpp:

int Student::sortKey = SORT_BY_LAST; 
Смежные вопросы