L'affermazione cout in questo ciclo for:C++ cout stesso sovrascrivendo mentre nel ciclo for
for (vector<Student>::iterator qw = students.begin(); qw != students.end(); ++qw){
Student a = *qw;
name = a.getName();
regno = a.getRegNo();
std::cout << "Name: "<< name << " Reg Number: " << regno << endl;
}
è la creazione di un comportamento strano, quello che il cout deve stampare è qualcosa di simile:
Nome: Mike Sanderson Reg numero: 10101
tuttavia che effettivamente stampa fuori è:
Reg Numero: 10101on
Sembrerebbe a me che dopo la seconda parte della dichiarazione cout si sta tornando al punto di partenza della linea e sovrascrivere in sé, ma perché? Spero che voi ragazzi potete aiutarmi e se avete bisogno di maggiori informazioni fatemelo sapere!
'Studente' non dovrebbe avere un puntatore al suo interno a cui è allocata la memoria dinamica senza seguire la regola del tre, vero? – chris
Che tipo è 'nome'? Cosa restituisce 'a.getName()'? (Metti un breakpoint di debug subito prima della riga 'cout' e guarda cosa c'è in' name' e 'regno'.) –
@DavidSchwartz yes Dovrei averlo messo, scusa, il nome è un ritorno std :: string e a.getName() una std.string a –