Нужно что бы конструктор абстрактного базового класса запускал в отдельном потоке чисто виртуальный метод, определённый дочерним классом. Что-то похожее на
struct A {
virtual void ex() = 0;
A() {
thread(ex); //Должен запуститься метод B::ex()
}
};
struct B :A {
void ex() {
cout << "ex\n";
}
};
Я пытался передавать в базовый конструктор указатель на метод, который нужно запустить, из дочернего конструктора:
struct A {
virtual void ex() = 0;
template<typename F, typename T>
A(F f, T t) {
thread tr(f, t);
}
};
struct B :A {
void ex() {
cout << "ex\n";
}
B() :A(&B::ex, this) {}
};
Вылетает ошибка abort has been called.
Как можно добиться подобного поведения?
Никак. Вызов виртуальных методов дочернего класса в конструкторе базового - UB
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Писал программу для перевода чисел из DEC в HEX и наоборот разными функциями на Windows с помощью MVS, теперь пришла пора перенести программу на линукс,...
Пытаюсь сделать поиск участников из существующего файла, но отображает изначально непонятные цифры, в следствии чего как я подозреваю не дает...
Когда изучал строки и векторы, наткнулся на вывод вектора таким образом