ho un get-metodo che restituisce un valore:Indirizzo del valore di ritorno del metodo
int Foo::getValue() const
{
return value_;
}
Sto utilizzando il seguente codice di scrivere questo valore in un file binario:
void Bar::write(const Foo& foo)
{
/* some code... */
file_.write(reinterpret_cast<char*>(&foo.getValue()), sizeof(int));
}
E sembra che tutto funzioni bene. Ma non sono sicuro di quello & foo.getValue() cosa. Restituirà sempre un indirizzo di valore di ritorno di getValue() o ci sono delle insidie?
EDIT1: Non voglio creare una var temporanea per questo.
EDIT2: Sì, compila e funziona correttamente.
Edit3: scrittura è un ostream :: scrivere
edit4: Con/parete e/Za non si compila: Errore C2102: '&' richiede l-value
'reinterpret_cast (& foo.getValue())' Questo sembra pericoloso per me. Un 'std :: string' non è solo un' char * 'terminato da null ... non puoi semplicemente usare' foo.getValue(). C_str() '? –
Che non dovrebbe nemmeno compilare. Se una funzione ritorna per valore, restituisce un valore. Non puoi prendere l'indirizzo di un valore. – Brian
Si prega di leggere alcuni libri (lo fai completamente sbagliato) –