我不知道我是否遗漏了什么,但我似乎无法弄清楚如何进行这项工作,也无法在网上找到答案。
假设我有两个类,A 类和 B 类。(存储在单独的文件中)
A 类有一个函数 setName() 可以在 A 类对象中设置一个变量。
B 类有一个函数 setOtherName() 可以设置 A 类对象名称的值。
所以我这样设置setOtherName():
void setOtherName(ClassA& cla)
{
*cla.setName("foobar");
}
然后我的主脚本看起来是这样的:
Class A burger;
Class B fries;
fries.setOtherName(*burger);
这在我的原始脚本中不起作用,我收到以下错误:
error: no matching function for call to 'ClassB::setOtherName(ClassA*&)
感谢任何帮助! (抱歉造成任何混淆)
实际代码: main.cpp :
#include <iostream>
#include "quests.h"
#include "player.h"
#include <string>
#include <cstdlib>
using namespace std;
int main()
{
quests GameQuests;
player Player;
GameQuests.quest1(Player);
Player.main();
return 0;
}
任务.cpp:
#include "quests.h"
#include "player.h"
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
void quests::quest1(player& charact){
cout << "By the way, what was your name?" << endl;
person1=4;
system("pause");
charact->setName();
}
最佳答案
setOtherName
函数的实现应该有签名
void ClassB::setOtherName(ClassA& cla)
您需要指定它包含在 ClassB
中。在 ClassB
的类定义中,确保包含
void setOtherName(ClassA&);
此外,由于您的变量 burger
是 ClassA
类型而不是 ClassA*
类型,因此无需取消引用变量将其传递给函数。像这样调用它
fries.setOtherName(burger);
您还错误地解除了对变量 cla
的引用。该对象通过引用而非指针传递,因此无需取消引用。
关于C++ 将一个对象传递给另一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31106125/