Правильное наследование std::exception

470
25 декабря 2016, 20:37

Пытаюсь написать свой класс исключений

class MathException : std::exception
{
public:
    MathException(std::string &&whatStr) noexcept : whatStr(std::move(whatStr)) { }
    MathException(const std::string &whatStr) noexcept : whatStr(whatStr) { }
    ~MathException() noexcept;
    const char* what() const noexcept override;
private:
    std::string whatStr;
};
const char* MathException::what() const noexcept
{
    return whatStr.c_str();
}
int main()
try
{
    throw MathException("Parse Error");
}
catch(...)
{
}

На что мне компилятор вежливо отвечает:

error: undefined reference to 'typeinfo for MathException'                                                                                                                                
error: undefined reference to 'MathException::~MathException()'                                                                                                                           
error: undefined reference to 'vtable for MathException'                                                                                                                                             
the vtable symbol may be undefined because the class is missing its key function (see go/missingkeymethod) 
Answer 1

Решение оказалось до боли смешное. Надо было всего лишь реализовать диструктор, либо сказать компилятору создать его: ~MathException() noexcept = default;

READ ALSO
Инициализация basic_string<uint8_t> С++

Инициализация basic_string<uint8_t> С++

Почему инициализация строки uOut происходит некорректно? Прикрепил пример teststr и данные, полученные при отладке

340
Проблема с SendMessage

Проблема с SendMessage

Приветствую!

371
Изменение в таблице базы данных mysql

Изменение в таблице базы данных mysql

Есть таблица Users в безе данных app

338
Как сделать запрос select и правильно связать таблицы

Как сделать запрос select и правильно связать таблицы

Все привет, я туплю и не могу сообразить как сделать следующееПредположим есть у нас:

284