Вот мой класс ошибок для обработки ошибок с попытаться & улов:C++ - ошибка компиляции с классом ошибки, которые наследуют от станд :: исключение
#include <stdexcept>
#include <string>
class Error : public std::exception
{
public:
Error(const std::string&) throw();
~Error() throw();
const char* what() const throw();
private:
std::string _msg;
};
И файл CPP:
#include "Error.hpp"
Error::Error(const std::string& msg) throw()
: _msg(msg)
{
}
Error::~Error() throw()
{
}
const char* Error::what() const throw()
{
return (_msg.c_str());
}
И У меня есть эти ошибки при компиляции:
main.o:(.gcc_except_table+0x34): undefined reference to `typeinfo for Error'
MailBox.o: In function `MailBox::MailBox(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
MailBox.cpp:(.text+0x245): undefined reference to `Error::Error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
MailBox.cpp:(.text+0x268): undefined reference to `Error::~Error()'
MailBox.cpp:(.text+0x270): undefined reference to `typeinfo for Error'
MailBox.cpp:(.text+0x2f0): undefined reference to `Error::Error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
MailBox.cpp:(.text+0x313): undefined reference to `Error::~Error()'
MailBox.cpp:(.text+0x31b): undefined reference to `typeinfo for Error'
MailBox.cpp:(.text+0x3d6): undefined reference to `Error::Error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
MailBox.cpp:(.text+0x3f9): undefined reference to `Error::~Error()'
MailBox.cpp:(.text+0x401): undefined reference to `typeinfo for Error'
MailBox.cpp:(.text+0x452): undefined reference to `Error::Error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
MailBox.cpp:(.text+0x475): undefined reference to `Error::~Error()'
MailBox.cpp:(.text+0x47d): undefined reference to `typeinfo for Error'
MailBox.cpp:(.text+0x50a): undefined reference to `Error::Error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
MailBox.cpp:(.text+0x52d): undefined reference to `Error::~Error()'
MailBox.cpp:(.text+0x535): undefined reference to `typeinfo for Error'
MailBox.cpp:(.text+0x6af): undefined reference to `Error::Error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
MailBox.cpp:(.text+0x6d2): undefined reference to `Error::~Error()'
MailBox.cpp:(.text+0x6da): undefined reference to `typeinfo for Error'
MailBox.cpp:(.text+0x854): undefined reference to `Error::Error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
MailBox.cpp:(.text+0x877): undefined reference to `Error::~Error()'
MailBox.cpp:(.text+0x87f): undefined reference to `typeinfo for Error'
MailBox.cpp:(.text+0x923): undefined reference to `Error::Error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
MailBox.cpp:(.text+0x946): undefined reference to `Error::~Error()'
MailBox.cpp:(.text+0x94e): undefined reference to `typeinfo for Error'
MailBox.cpp:(.text+0x9b6): undefined reference to `Error::Error(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
MailBox.cpp:(.text+0x9d9): undefined reference to `Error::~Error()'
MailBox.cpp:(.text+0x9e1): undefined reference to `typeinfo for Error'
collect2: ld returned 1 exit status
Я уже использовал этот класс ошибок для anothe r проект, и он работал хорошо. Я не понимаю, почему здесь это не работает.
Но у меня уже есть файл Error.cpp с этим кодом. – Elfayer
Смотрите, я редактировал свое сообщение. – Elfayer
@Elfayer: тогда файл 'Error.cpp' не обрабатывается компилятором каким-то образом. Проверьте настройки проекта и убедитесь, что файл не исключен из сборки. Кроме того, чтобы убедиться, что это проблема, попробуйте вставить эти определения функций, как я предложил. Если это работает, проблема в том, что 'Error.cpp' не обрабатывается. –