2017-12-02 29 views
2

我有一個名爲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。 爲什麼第一種方法在打印時(以及分配數值)工作正常,但第二種方法沒有? 我很確定這是一個重複的問題,但我很努力地找到一個解決方案,但我不能。

+1

試試'void preencher(Funcionario&func)' –

回答

2

您需要通過非成員案例的引用傳遞func。你實際上是設置本地'func'的成員,但這與調用函數中的實例無關。

+0

我只是修復它。另一個人前一段時間回答了這個問題,但我們都刪除了我們的答案,我通過引用傳遞並按值傳遞並修復了它。 –

+0

@NaviSeven,最好在評論中與人互動。如果你看到某些事情只是標誌和忽略。 – Incomputable

+0

@Incomputable okie dokie。 –