2011-02-01 4 views
17

Я попытался скомпилировать следующий код, используя Qt (4.6.3) + MinGW:отсутствует станд :: runtime_error в кварт + MinGW

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

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

    QCoreApplication a(argc, argv); 

    return a.exec(); 
} 

... и получил эту ошибку:

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

Проект создан с нуля (консольное приложение), про файл:

QT  += core 

QT  -= gui 

TARGET = untitled11 
CONFIG += console 
CONFIG -= app_bundle 

TEMPLATE = app 

SOURCES += main.cpp 

Пробовал скомпилировать это с помощью Qt + msvc2008 компилятор - работает отлично.

Это стандартное исключение, понятия не имею, почему его не хватает.

ответ

44

<exception> определяет только базу std::exception класс; если вам нужны дочерние классы, такие как std::runtime_error, вы должны включить заголовок <stdexcept>.

+0

+1 AFAIK, не существует. – Simone

+4

Он существует и содержит базовый класс 'std :: exception', тогда как' 'содержит стандартные дочерние классы исключений. http://www.cplusplus.com/reference/std/exception/ – CharlesB

+0

+1000 это сбивало меня с ума при использовании 'std :: invalid_argument' (на Ubuntu, gcc 4.7). Спасибо! –