@cryptohas

Почему появляется SIGABRT в данном случае?

При попытке вызвать конструктор класса с параметром типа "string", вылеает ошибка SIGABRT:

//WebDriver.h
WebDriver::WebDriver(const string& domain);

//main.cpp
WebDriver driver("sitename.com"); //SIGABRT

Вопрос сильно усложняется тем, что переменная domain в WebDriver не делает вообще ничего. При попытках ставить брейкпойнты на первых строчках кода конструктора, отладчик даже не доходит до исполнения этого кода:

WebDriver::WebDriver(const string& domain){ //SIGABRT
    int port = 443; // до сюда не доходит исполнение
    //.....    
}

Но если убрать параметры у класса, исполнение проходит без ошибок:

WebDriver::WebDriver(){
    int port = 443; // OK
    //.....    
}
  • Вопрос задан
  • 185 просмотров
Решения вопроса 1
@cryptohas Автор вопроса
Ошибка крылась не в аргументах, а полях класса:

class WebDriver{
QJSEngine js;
//...
};


QJSEngine требовал инициализации некоторых значений ещё до вызова конструктора WebDriver:

QApplication a(argc, argv); // Этого кода не было
WebDriver driver("domain"); //Теперь все хорошо


Если вылетает ошибка до выполнения кода конструктора, стоит проверить переменные этого класса
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы