std::thread operator() базового класса по указателю.
От: cruelbob  
Дата: 28.12.12 19:38
Оценка:
Есть базовый класс с виртуальным оператором вызова (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);

Что можно сделать?
Twitter — http://twitter.com/Cruelbob
Блог — http://cruelbob.blogspot.ru/
Мыло — vlad.kolotvin@gmail.com
Re: std::thread operator() базового класса по указателю.
От: _niko_ Россия  
Дата: 28.12.12 20:38
Оценка: :))
Здравствуйте, cruelbob, Вы писали:

C>Есть базовый класс с виртуальным оператором вызова (operator()).

C>Что можно сделать?

   std::thread t1([a]{(*a)();});
   std::thread t2([a]{a->operator()();});
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.