Я хотел бы знать, возможно ли наследовать от boost :: function.
По сути, для простоты использования мне хотелось бы иметь тип «Делегат», который в основном являетсяповышение :: функции.Это просто для простоты использования в некотором коде, который я пишу.
В какой-то момент я typedef повысил бы :: function для Delegate, но typedef'ing в моем опыте играет с GDB.Особенно, если это шаблонно, поэтому я хотел избежать этого (когда-нибудь пытался отлаживать stl-контейнеры, которые были набраны? Oofta).
В сети я нашел некоторый код, который привел некоторый пример:*
Теперь, когда я пытаюсь использовать его, я получаю некоторые ошибки.Пример использования:
Tank * tankptr = new Tank();
Delegate<void ()> tankShoot(boost::bind(boost::mem_fn(&Tank::Shoot),tankptr));
Это приводит к ошибкам, таким как
error: no matching function for call to ‘Delegate<void ()()>::Delegate(boost::_bi::bind_t<boost::_bi::unspecified, boost::_mfi::mf0<void, Tank>, boost::_bi::list1<boost::_bi::value<Tank*> > >)’
Delegate.h:26: note: candidates are: Delegate<void ()()>::Delegate()
Delegate.h:26: note: Delegate<void ()()>::Delegate(const Delegate<void()()>&)
Если бы мне пришлось угадывать, почему я получаю эти ошибки, я должен был бы сказать, что причинаЯ пропускаю какой-то конструктор копирования, который использует любую базу, которую возвращает конструктор boost :: bind.
Любые мысли о том, как я могу преодолеть это препятствие, или любой, кто сможет указать мне на хорошие примеры наследования отповышение :: функции?