У меня есть задание, в котором мне нужно прочитать слова из разных документов и сохранить их в векторе строк, я сделал этот вектор статическим, чтобы каждый документ просто добавил свои слова в вектор, чтобы у меня был один список из всех слов.
я сделал класс документа и в шапке написал:
class document {
public:
document(string filename);
static vector<string> words;
string name;
vector<int> frequency;
void getFrequency();
static void addWord(string wordd);
в файле document.cpp реализован метод addWord со следующим:
static void document::addWord(string wordd){
vector<string>::iterator i = find(words.begin(), words.end(), wordd);
if (i == words.end()) {
words.push_back(wordd);
}
}
однако это не работает, и каждый раз, когда я пытаюсь построить код, это выдает мне сообщение об ошибке
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf "/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-MacOSX/assignment1 mkdir -p build/Debug/GNU-MacOSX rm
-f build/Debug/GNU-MacOSX/main.o.d g++ -c -g -MMD -MP -MF build/Debug/GNU-MacOSX/main.o.d -o build/Debug/GNU-MacOSX/main.o main.cpp mkdir -p dist/Debug/GNU-MacOSX g++ -o dist/Debug/GNU-MacOSX/assignment1 build/Debug/GNU-MacOSX/main.o Undefined symbols for architecture x86_64: "document::words", referenced from:
document::getFrequency() in main.o
document::addWord(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)in main.o ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status make[2]: *** [dist/Debug/GNU-MacOSX/assignment1] Error 1 make[1]: *** [.build-conf] Error 2 make: *** [.build-impl] Error 2
BUILD FAILED (exit value 2, total time: 1s)