我不知道我是否遗漏了什么,但我似乎无法弄清楚如何进行这项工作,并且无法在网上找到答案。
假设我有两个类,A 类和 B 类。(存储在单独的文件中)
A 类有一个函数setName(),它在 A 类对象中设置一个变量。
B 类有一个函数setOtherName()来设置 A 类对象名称的值。
所以我像这样设置setOtherName():
void setOtherName(ClassA& cla)
{
*cla.setName("foobar");
}
Run Code Online (Sandbox Code Playgroud)
然后我的主脚本看起来像这样:
Class A burger;
Class B fries;
fries.setOtherName(*burger);
Run Code Online (Sandbox Code Playgroud)
这在我的原始脚本中不起作用,我收到以下错误:
error: no matching function for call to 'ClassB::setOtherName(ClassA*&)
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏!(抱歉有任何混淆)
实际代码: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;
}
Run Code Online (Sandbox Code Playgroud)
quests.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();
}
Run Code Online (Sandbox Code Playgroud)
你的setOtherName函数的实现应该有签名
void ClassB::setOtherName(ClassA& cla)
Run Code Online (Sandbox Code Playgroud)
您需要指定它包含在ClassB. 在你的类定义中ClassB,确保包括
void setOtherName(ClassA&);
Run Code Online (Sandbox Code Playgroud)
此外,由于您的变量burger是 typeClassA而不是 type ClassA*,因此在将其传递给函数时无需取消引用该变量。像这样称呼
fries.setOtherName(burger);
Run Code Online (Sandbox Code Playgroud)
您还错误地取消了对变量的引用cla。该对象是通过引用而不是指针传递的,因此无需取消引用。
| 归档时间: |
|
| 查看次数: |
11841 次 |
| 最近记录: |