2011-02-01 29 views
17

tôi đã cố gắng để biên dịch đoạn mã sau sử dụng Qt (4.6.3) + MinGW:thiếu std :: runtime_error trong + mingw qt

#include <QtCore/QCoreApplication> 
#include <exception> 

int main(int argc, char *argv[]) 
{ 
    throw std::runtime_error(""); 

    QCoreApplication a(argc, argv); 

    return a.exec(); 
} 

... và đã nhận lỗi này:

..\untitled11\main.cpp:6: error: 'runtime_error' is not a member of 'std' 

dự án tạo ra từ đầu (giao diện điều khiển ứng dụng), các tập tin pro:

QT  += core 

QT  -= gui 

TARGET = untitled11 
CONFIG += console 
CONFIG -= app_bundle 

TEMPLATE = app 

SOURCES += main.cpp 

Cố gắng để biên dịch sử dụng Qt + MSVC2008 trình biên dịch này - hoạt động tốt.

Đây là ngoại lệ chuẩn, không biết tại sao bị thiếu.

Trả lời

44

<exception> chỉ xác định loại cơ sở std::exception; nếu bạn muốn các lớp con như std::runtime_error, bạn phải bao gồm tiêu đề <stdexcept>.

+0

+1 AFAIK, không tồn tại. – Simone

+4

Nó tồn tại và chứa lớp 'std :: exception' cơ sở, trong khi' 'chứa các lớp ngoại lệ con tiêu chuẩn. http://www.cplusplus.com/reference/std/exception/ – CharlesB

+0

+1000 đã khiến tôi phát điên khi sử dụng 'std :: invalid_argument' (trên Ubuntu, gcc 4.7). Cảm ơn bạn! –

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