2010-04-12 17 views
11

Ho il seguente membro di classe pippo.Restituisce il riferimento dalla classe a questo

foo &foo::bar() 
{ 
    return this; 
} 

Ma sto ricevendo errori del compilatore. Che cosa stupida sto sbagliando?

errore compilatore (gcc) errore: inizializzazione valido di riferimento non const di tipo 'foo &' da un temporaneo di tipo 'foo * const'

risposta

21

this è un puntatore. Quindi dovrebbe essere return *this;

+0

Grazie dovrei saperlo :) – Thomas

6

Come sottolinea Naveen, è necessario restituire *this.

Solo un rapido suggerimento però: un modo per capire quali errori di compilazione un po 'oscuro significato è quello di provare a compilare su un compilatore diverso per vedere se c'è un messaggio migliore. Ad esempio, è possibile utilizzare Comeau online.

In questo caso si dà:

"ComeauTest.c", line 7: error: initial value of reference to non-const must be an 
      lvalue 
    return this; 
      ^
Non

sicuro che sia meglio in questo caso - ma in alcuni casi i messaggi sono modo migliore.

+0

+1 per il suggerimento rapido. Può essere davvero chiaro. – Francesco

+1

infatti, MSVC 2008 restituisce, "errore C2440: 'return': non può convertire da 'foo * const' a 'foo &'", che penso sia abbastanza chiaro. –

Problemi correlati