2016-10-22 162 views
-3

我有一个类Dictionary它有一个字典中的字符串矢量。 我正在采取Word从用户,并检查单词是否在Dictionary将一个类的对象传递给另一个类

由于实施的限制,我需要Dictionary类(可变Lexicon)的对象传递给Word类(在一个Word类我需要使用其在Dictionary类中定义的搜索功能)。

所以我在Word班,并打电话给MyWords.search();。但我的代码不能编译!为什么?

int main() 
{ 
Dictionary Lexicon(dictionary_file) 
dictionary_file.close(); 
cout<<"Please enter a word to be searched in the dictionary:"<<endl; 
cin>>word_to_search; 


Word Keyword; 
Keyword.setter(word_to_search); 
Keyword.gettingDictionary(Lexicon); 
return 0; 
} 

void Word::gettingDictionary(const Dictionary& myWords) 
{ 
    myWords.search(keyword);// function defined in Dictionary class 
          //keyword is a member of Word class 
} 

这里在编译的时候我收到错误:

++ -c main.cpp 
In file included from dictionary.h:22:0, 
       from main.cpp:19: 
word.h:45:31: error: ‘Dictionary’ does not name a type 
    void gettingDictionary(const Dictionary& myWords); 
          ^~~~~~~~~~ 
main.cpp: In function ‘int main(int, char**)’: 
main.cpp:82:41: error: no matching function for call to  ‘Word::gettingDictionary(Dictionary&)’ 
     Keyword.gettingDictionary(Lexicon); 
            ^
In file included from dictionary.h:22:0, 
       from main.cpp:19: 
word.h:45:7: note: candidate: void Word::gettingDictionary(const int&) 
void gettingDictionary(const Dictionary& myWords); 
    ^~~~~~~~~~~~~~~~~ 
word.h:45:7: note: no known conversion for argument 1 from  ‘Dictionary’ to ‘const int&’ 
make: *** [Makefile:7: main.o] Error 1 
+2

您的代码[does not work](http://importblogkit.com/2015/07/does-not-work/)? –

+3

发布一个[MCVE],重现您的错误,请。 –

+0

尊敬的用户。人类语言也有一些语法规则。每个语句都需要以'。'(与C++中的';'原理相同)来结束。没有你的'。'你的问题很难理解。我相应编辑。另外请记住,“不起作用”是无用的。 “不编译”使事情变得更清晰;-)。 – Christophe

回答

0

您为我们提供了一个cpp的代码的某些提取物。

然而,你的错误是在别的地方。编译器声称在文件word.h(在标题中是这样)的行45中存在语法错误。更确切地说,编译器声称他不知道那里有Dictionary

此错误可能与包含标题或定义类的顺序有关。如果你不能确定你Dictionary定义Word(这需要字典的功能的签名)之前,你只需要在Word课前做好向前声明:

class Dictionary; // to be defined afterwards 

这使你在机会Word类在成员变量或成员函数的签名中使用Dictionary引用和指针,甚至在实际定义该类之前。但是,当然,在实现任何使用它的Word成员之前,您需要真正定义Dictionary类。