2013-01-24 36 views
5

Tôi đang cố gắng tạo một lớp ngoại lệ trong C++ và nó không hoạt động. Tôi đã giảm mã xuống mức tối thiểu và tôi vẫn không thể tìm thấy lỗi. Dưới đây là tập tin tiêu đề của tôi:Thừa kế: tên lớp được mong đợi trước ‘{’ mã thông báo

#ifndef LISTEXCEPTION_H 
#define LISTEXCEPTION_H 

// C++ standard libraries 
#include <exception> 

/* CLASS DEFINITION */ 
class ListException: public exception { 
}; 

#endif //LISTEXCEPTION_H 

và đây là lỗi tôi nhận được:

error: expected class-name before ‘{’ token 

này là khá bất ngờ. Tôi giải quyết điều này như thế nào?

Trả lời

8

Ý của bạn là

class ListException: public std::exception 
//       ^^^ 

?

+0

Cảm ơn bạn !! Nó là hiển nhiên, vì tôi đang ở trong một tập tin tiêu đề !! – Backslash36

+0

@ Backslash36 Ngoài sự thiếu 'std ::' trên 'std :: exception', bạn có biết rằng trong C++, bất kỳ lớp nào cũng có thể là một ngoại lệ? Bạn không phải thừa hưởng từ 'std :: exception' nếu bạn không muốn. – Yakk

+0

Ồ, tôi nghĩ đó là một yêu cầu. Cảm ơn bạn – Backslash36

4

Nó tinh tế cho bạn biết rằng exception không phải là tên của một lớp (dù có tuyên bố nằm trong phạm vi nào).

Bạn có thể dự định thay thế std::exception.

+0

Đúng vậy! Cám ơn – Backslash36

3

exception cuộc sống trong không gian tên std:

class ListException: public std::exception { ... } 
Các vấn đề liên quan