Ho giocato con riferimenti (sto ancora avendo problemi al riguardo).Sto facendo qualcosa di sbagliato qui (riferimenti in C++)?
1- Vorrei sapere se questo è un codice accettabile:
int & foo(int &y)
{
return y; // is this wrong?
}
int main()
{
int x = 0;
cout << foo(x) << endl;
foo(x) = 9; // is this wrong?
cout << x << endl;
return 0;
}
2- Anche questo è da un campione di esame:
Week & Week::highestSalesWeek(Week aYear[52])
{
Week max = aYear[0];
for(int i = 1; i < 52; i++)
{
if (aYear[i].getSales() > max.getSales())
max = aYear[i];
}
return max;
}
Si chiede l'errore in questo codice , anche come risolverlo.
La mia ipotesi è che restituisca un riferimento locale. La correzione è:
Week & max = aYear[0];
È questo il corretto/abbastanza?
Avevi ragione. Mi sono inchinato in modo vergognoso, lol – zildjohn01
+1 per l'arco, ma non sono d'accordo leggermente: non c'è nulla di vergognoso nell'apprendimento. Non farai mai più quell'errore :-) – Thanatos
Perché coinvolgere un puntatore? Un riferimento locale sembra preferibile. –