2010-04-25 49 views
22

Este código funciona;Lanzamiento fuera de rango en C++

int at(int index) { 
    if(index < 1 || index >= size) 
    throw 0; 

    return x[index]; 
} 

embargo, esto no

int at(int index) { 
    if(index < 1 || index >= size) 
    throw std::out_of_range; 

    return x[index]; 
} 

me sale el error "espera expresión primaria antes ';'". Ahora ... me sorprende porque sé que existe std :: out_of_range y tengo

#include <stdexcept> 
+2

¿Cuál es la diferencia entre las dos funciones? – kennytm

+0

¡Uy !, copie y pegue el error, ahora está bien. – Suugaku

+6

¿Por qué está 0 fuera de límites? –

Respuesta

62

Reemplazar con throw std::out_of_range;throw std::out_of_range ("blah");. Es decir. necesitas crear un objeto, no puedes lanzar un tipo.

Cuestiones relacionadas