将类的对象传递给另一个类

时间:2016-10-22 13:27:41

标签: c++ class object pass-by-reference

我有一个类Dictionary,它在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

1 个答案:

答案 0 :(得分:0)

您提供了一些cpp代码的摘录。

然而,您的错误在其他地方。编译器声称在文件 word.h 的第45行(所以在标题中)存在语法错误。更确切地说,编译器声称他不知道Dictionary那里。

此错误可能与您包含标头或定义类的顺序有关。如果在定义Dictionary(需要函数签名中的Dictionary)之前无法定义Word,则需要在Word类之前进行前向声明:< / p>

class Dictionary;    // to be defined afterwards

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