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

Passing an object of a class to another class

本文关键字:对象 另一个 一个      更新时间:2023-10-16

我有一个类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

您提供给我们一些cpp代码的摘录。

你的错误是在其他地方。编译器声称在文件word.h的第45行(因此在头文件中)有语法错误。更准确地说,编译器声称他不知道那里的Dictionary

此错误可能与包含头文件或定义类的顺序有关。如果不能在定义Word之前定义Dictionary(需要在函数签名中使用Dictionary),则需要在Word类之前进行前向声明:

class Dictionary;    // to be defined afterwards

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

相关文章: