Есть базовый класс с виртуальным оператором вызова (operator()).
class A {
public:
virtual void operator()() = 0;
virtual ~A() = 0 {}
};
есть от него наследующий и переопределяющий данный оператор
class B: public A {
public:
void operator()() override {
// do something
}
~B() override {
}
};
A* a = new B();
Хотелось бы обойти написание данного кода:
std::thread t(&A::operator(),a);
Что можно сделать?
Здравствуйте, cruelbob, Вы писали:
C>Есть базовый класс с виртуальным оператором вызова (operator()).
C>Что можно сделать?
std::thread t1([a]{(*a)();});
std::thread t2([a]{a->operator()();});