我有一个类词典
的头文件#ifndef DICTIONARY_H
#define DICTIONARY_H
#include <string>
#include <vector>
#include <unordered_set>
class Dictionary {
public:
Dictionary(string wordFile);
bool contains(const string& word) const;
vector<string> get_suggestions(const string& word) const;
private:
unordered_set<string> words;
};
#endif
我收到错误&#34;错误:在'('token Dictionary :: Dictionary(string wordFile)&#34;之前预期的构造函数,析构函数或类型转换。在.cpp文件中看起来像这样:
#include <string>
#include <vector>
#include <fstream>
#include <iostream>
#include <algorithm>
#include "word.h"
#include "dictionary.h"
#include <unordered_set>
#include <string>
Dictionary::Dictionary(string wordFile) {
string str;
ifstream input(wordFile);
while (getline(input, str)) {
words.insert(str);
}
}
bool Dictionary::contains(const string& word) const {
unordered_set<string>::const_iterator got = words.find(word);
if(got == words.end()){
return false;
}
return true;
}
vector<string> Dictionary::get_suggestions(const string& word) const {
vector<string> suggestions;
return suggestions;
}
我不知道出了什么问题......我来自Java背景,我在习惯用C ++编写并修复这些错误方面遇到了一些麻烦。
答案 0 :(得分:0)
原始错误是因为您未在头文件中限定string
:
Dictionary(string wordFile);
应该是:
Dictionary(std::string wordFile);
(以及标题中string
和unordered_map
的其他用法类似。)
你会在.cpp文件中遇到同样的问题,但只需将using namespace std;
添加到文件顶部即可解决问题, 所有{{1>指令。 (您不应将#include
放在头文件中,或者在包含头文件之前,因为它可能会产生不良后果并混淆以后的标题。)