我有一个任务,我需要从不同的文档中读取单词,并将它们存储在一个字符串矢量中,我将这个矢量设置为静态,以便每个文档都将它们的单词添加到矢量中,以便我可以有一个所有的话。 我犯了一个文档类,并在标题中我写道:在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