C++与功能类/结构分配值问题
我有一个名为Funcionario这样的类:C++与功能类/结构分配值问题
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功能和一切工作正常时,我直接设置名称和CPF
cin >> Func.nome >> Func.cpf;
或callin g这样的功能:
string nome; int cpf;
cin >> nome >> cpf;
Func.preencher(nome, cpf);
但我试着做不同的事情,我有一个问题。的 代替宣告内部Funcionario功能preencher,我声明它以外的功能与类型Funcionario 的参数,然后设置“诺姆”和“CPF”值在函数是这样的:
void preencher(Funcionario func) {
cin >> func.nome;
cin >> func.cpf;
}
如果我尝试设置Func nome和cpf直接与
cin >> Func.cpf >> Func.nome;
它工作正常。 但是,如果我尝试调用新preencher功能一样,
preencher(Func);
与诺姆=若昂和CPF = 7842,例如, 当我打印的名字,我得到一个空字符串,当我打印int cpf我得到非常奇怪的值,如-1425739872或-1121695152。 为什么第一种方法在打印时(以及分配数值)工作正常,但第二种方法没有? 我很确定这是一个重复的问题,但我很努力地找到一个解决方案,但我不能。
回答:
您需要通过非成员案例的引用传递func。你实际上是设置本地'func'的成员,但这与调用函数中的实例无关。
以上是 C++与功能类/结构分配值问题 的全部内容, 来源链接: utcz.com/qa/257295.html