2010-04-25 22 views
22

Questo codice funziona;Eccezione di lancio fuori intervallo in C++

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

    return x[index]; 
} 

Tuttavia questo non

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

    return x[index]; 
} 

ottengo l'errore "previsto espressione primaria prima ';'". Ora ... mi sorprende perché so che esiste std :: out_of_range e ho

#include <stdexcept> 
+2

Qual è la differenza tra le due funzioni? – kennytm

+0

oops, errore di copia-incolla, ora va bene. – Suugaku

+6

Perché 0 fuori limite? –

risposta

62

Sostituire throw std::out_of_range; con throw std::out_of_range ("blah");. Cioè devi creare un oggetto, non puoi lanciare un tipo.

Problemi correlati