2010-04-25 29 views
22

Mã này hoạt động;Vứt bỏ phạm vi ngoại lệ trong C++

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

    return x[index]; 
} 

Tuy nhiên, điều này không

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

    return x[index]; 
} 

tôi nhận được lỗi "dự kiến ​​biểu hiện chủ yếu trước ';'". Bây giờ ... nó làm tôi ngạc nhiên vì tôi biết std :: out_of_range tồn tại và tôi có

#include <stdexcept> 
+2

Sự khác nhau giữa hai chức năng là gì? – kennytm

+0

oops, sao chép-dán sai lầm, bây giờ nó là ok. – Suugaku

+6

Tại sao 0 ngoài giới hạn? –

Trả lời

62

Thay throw std::out_of_range; với throw std::out_of_range ("blah");. I E. bạn cần phải tạo một đối tượng, bạn không thể ném một loại.

Các vấn đề liên quan