@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
    //.....    
}
  • Вопрос задан
  • 186 просмотров
Решения вопроса 1
@cryptohas Автор вопроса
Ошибка крылась не в аргументах, а полях класса:

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


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

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


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

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

Похожие вопросы