gpt4 book ai didi

C++ 将一个对象传递给另一个对象?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:49 24 4
gpt4 key购买 nike

我不知道我是否遗漏了什么,但我似乎无法弄清楚如何进行这项工作,也无法在网上找到答案。

假设我有两个类,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&);

此外,由于您的变量 burgerClassA 类型而不是 ClassA* 类型,因此无需取消引用变量将其传递给函数。像这样调用它

fries.setOtherName(burger);

您还错误地解除了对变量 cla 的引用。该对象通过引用而非指针传递,因此无需取消引用。

关于C++ 将一个对象传递给另一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31106125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com