2011-02-01 19 views
17

He tratado de compilar el código siguiente utilizando Qt (4.6.3) + MinGW:std :: runtime_error que falta en qt + MinGW

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

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

    QCoreApplication a(argc, argv); 

    return a.exec(); 
} 

... y consiguió este error:

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

proyecto creado desde cero (aplicación de consola), el archivo de pro:

QT  += core 

QT  -= gui 

TARGET = untitled11 
CONFIG += console 
CONFIG -= app_bundle 

TEMPLATE = app 

SOURCES += main.cpp 

Probado para compilar esta usando Qt + MSVC2008 compilador - funciona bien.

Esta es una excepción estándar, no tengo idea de por qué falta.

Respuesta

44

<exception> define solo la clase base std::exception; si desea clases secundarias como std::runtime_error, debe incluir el encabezado <stdexcept>.

+0

+1 AFAIK, no existe. – Simone

+4

Existe y contiene la clase base 'std :: exception', mientras que' 'contiene clases de excepciones secundarias estándar. http://www.cplusplus.com/reference/std/exception/ – CharlesB

+0

+1000 me estaba volviendo loco al usar 'std :: invalid_argument' (en Ubuntu, gcc 4.7). ¡Gracias! –

Cuestiones relacionadas