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

回到顶部