2010-09-15 19 views
9

Al compilar el código me sale el siguiente error:¿Qué significa 'inicialización no válida de referencia no const'?

In function 'int main()': Line 11: error: invalid initialization of non-const reference of type 'Main&' from a temporary of type 'Main'

Aquí está mi código:

template <class T> 
struct Main 
{ 
    static Main tempFunction(){ 
     return Main(); 
    } 
}; 

int main() 
{ 
    Main<int> &mainReference = Main<int>::tempFunction(); // <- line 11 
} 

no entiendo por qué? ¿Alguien puede explicar?

+1

¿Cuál es el error – Mark

+1

Por favor enviar los mensajes de error exactos desde el compilador. –

+0

La declaración de su plantilla no depende de la clase parametrizada. –

Respuesta

9

En C++ los temporales no pueden vincularse a referencias no constantes.

Main<int> &mainReference = Main<int>::tempFunction();

Aquí están tratando de asignar el resultado de una expresión rvalue a una referencia no constante mainReference que es válido.

intentar hacer que const

+2

http://herbsutter.com/2008/01/01/gotw-88-a-candidate-for-the-most-important-const/ – log0

+0

@Ugo: Sí, buen artículo. ¿Cual es tu punto? –

+0

Gracias Prasoon Saurav. – Donald

Cuestiones relacionadas