J'ai une classe C++ et je suis en train de l'exécuter dans Ubuntu:Création d'une nouvelle exception en C++
#ifndef WRONGPARAMETEREXCEPTION_H_
#define WRONGPARAMETEREXCEPTION_H_
#include <iostream>
#include <exception>
#include <string>
using namespace std;
#pragma once
class WrongParameterException: public exception
{
public:
WrongParameterException(char* message): exception(message) {};
virtual ~WrongParameterException() throw() {};
};
#endif
lorsque je tente de le compiler, le compilateur me donne cette erreur:
WrongParameterException.h: In constructor ‘WrongParameterException::WrongParameterException(char*)’:
WrongParameterException.h:14: error: no matching function for call to ‘std::exception::exception(char*&)’
/usr/include/c++/4.3/exception:59: note: candidates are: std::exception::exception()
/usr/include/c++/4.3/exception:57: note: std::exception::exception(const std::exception&)
Quelqu'un peut-il me dire ce que je fais mal? J'ai essayé de changer la variable de message à string
ou const string
ou const string&
mais cela n'a pas aidé.
Voici comment j'utilise la nouvelle exception que j'ai créé à partir principale:
try
{
if ((strToInt1 == -1) || (parameters[1] == NULL) || (strToInt3 == -1) || (parameters[3] != NULL))
{
throw WrongParameterException("Error in the config or commands file");
}
}
catch(WrongParameterException e)
{
log.addMsg(e.what());
}
Sans rapport avec la question, mais important: n'utilisez pas l'espace de noms std; dans un en-tête. Ensuite, découvrez les classes d'exception standard fournies par C++ (std :: runtime_error, logic_error et domain_error etc.). Attraper par const &. Et n'incluez pas pour un en-tête d'exception. –
gimpf