我有一个叫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 func,当我直接用
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和cpf直接设置为
cin >> Func.cpf >> Func.nome;效果很好。但是,如果我尝试像这样调用新的preencher函数
preencher(Func);例如,对于nome = joao和cpf = 7842,当我打印名称时得到一个空字符串,而当我打印int时,得到了非常奇怪的值,比如-1425739872或-1121695152。为什么第一种方法在打印时工作得很好(同时也分配值),而第二种方法却没有?我很确定这是一个重复的问题,但我真的很努力地想找到一个解决办法,但我就是做不到。
发布于 2017-12-02 16:48:59
对于非会员的案件,你需要通过参考文件。您实际上正在设置本地“func”的成员,但这与调用函数中的实例无关。
https://stackoverflow.com/questions/47610057
复制相似问题