我有一個任務,我需要從不同的文檔中讀取單詞,並將它們存儲在一個字符串矢量中,我將這個矢量設置爲靜態,以便每個文檔都將它們的單詞添加到矢量中,以便我可以有一個所有的話。 我犯了一個文檔類,並在標題中我寫道:在C++中使用靜態屬性?
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);
}
}
但是每次都不起作用,我嘗試建立它給了我此錯誤消息函數的定義(從.cpp文件)
"/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)
你只需*聲明*'document :: words',你還需要*在你的cpp文件中定義*它。 – 2012-02-06 16:27:37
文檔不存儲自己的單詞是毫無意義的。基本上這個問題根本不需要文檔類(因爲它不代表文檔),並且看到你想查詢單詞的頻率,地圖會更合適。 –
UncleBens
2012-02-06 16:35:42