将一个类的对象传递给另一个类
Passing an object of a class to another class
我有一个类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成员之前,您需要字典类的真正定义。
相关文章:
- 我可以将一个用clang c++11编译的对象与另一个用c++17编译的对象链接起来吗
- 为什么我不能将一个对象push_back到属于另一个类的对象向量中?
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- 如果C++对象的类在另一个boost模块中声明,如何使用boost将指向该对象的指针返回到python
- 为什么C++在将一个对象复制到另一个对象时需要对这两个对象进行低级常量限定
- 检查哪个对象调用了另一个对象的对象方法
- C++ 如何在将新对象分配给另一个对象时创建新对象
- 如何处理从一个对象传递到另一个在C++中具有公共抽象类的对象的消息
- 为什么我可以在不重载 "=" 运算符的情况下将一个对象分配给另一个对象?
- 如何在qt中将信号和插槽与另一个对象连接 --解决了
- 为什么我不能在主函数之外定义一个类的对象(它继承了另一个类)?
- Qt:从另一个窗口访问公共对象
- 是否可以使用一个类来控制 C++ 中另一个类的对象?(阿杜伊诺)
- C++:将初始化的对象传递给另一个类的构造函数;需要不必要的构造函数吗?
- 将另一个类的对象传递到当前类C++的构造函数中(不是成员初始化)
- 结束另一个线程中使用的对象的生存期
- 如何将我编写的对象传递到另一个类的构造函数中?
- 在 C++ 中将一个模板类型的对象类型转换为另一个模板类型
- 在C++中将对象从另一个类传递到另一个类的构造函数?
- 删除对象(另一个..)时双重释放或损坏