gpt4 book ai didi

c++函数将值分配给类/结构的问题

转载 作者:搜寻专家 更新时间:2023-10-31 02:08:24 25 4
gpt4 key购买 nike

我有一个像这样的 Funcionario 类:

class Funcionario
{
public:
string nome;
int cpf;

void preencher(string nome, int cpf);
};

preencher 函数是这样工作的:

void Funcionario::preencher(string nome, int cpf)
{
this->nome = nome;
this->cpf = cpf;
}

在主函数上,我声明了 Funcionario 函数,当我直接使用 name 和 cpf 设置名称和 cpf 时一切正常

    cin >> Func.nome >> Func.cpf;

或者像这样调用函数:

    string nome;
int cpf;
cin >> nome >> cpf;

Func.preencher(nome, cpf);

但我尝试以不同的方式做事,但遇到了问题。我没有在 Funcionario 内部声明函数 preencher,而是使用 Funcionario 类型的参数在其外部声明函数然后像这样在函数中设置“nome”和“cpf”值:

void preencher(Funcionario func)
{
cin >> func.nome;
cin >> func.cpf;
}

如果我尝试直接使用

设置 Func nome 和 cpf
cin >> Func.cpf >> Func.nome;

它工作正常。但是,如果我尝试像那样调用新的 preencher 函数

preencher(Func);

以 nome = joao 和 cpf = 7842 为例,当我打印名称时,我得到一个空字符串,当我打印 int cpf 时,我得到非常奇怪的值,如 -1425739872 或 -1121695152。为什么第一种方法在打印(以及赋值)时工作正常,而第二种方法却不行?我很确定这是一个重复的问题,但我非常努力地寻找解决方案,但就是找不到。

最佳答案

对于非成员情况,您需要通过引用传递 func。您实际上是在设置本地“func”的成员,但这与调用函数中的实例无关。

关于c++函数将值分配给类/结构的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47610057/

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