c ++函数为类/结构赋值的问题

时间:2017-12-02 16:37:23

标签: c++

我有一个名为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;
}

在main函数上我声明了Funcionario func,当我直接用

设置名称和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。 为什么第一种方法在打印时工作正常(并分配值),但第二种方法不适用? 我很确定这是一个重复的问题,但我很难找到解决方案,但我无法做到。

1 个答案:

答案 0 :(得分:2)

您需要通过引用为非成员案例传递func。您实际上是在设置本地'func'的成员,但这与调用函数中的实例无关。