У меня есть пул задач, используя потоки, которые пытаются вызвать функцию boost ::, которая оказывается чисто виртуальной, без реализации.Как определить, является ли функция boost :: чистой виртуальной?
Есть ли что-нибудь подобное?
void doStuff(boost::function<void()> foo)
{
if (!foo.pure_virtual)
{
foo();
}
}
Примечание: Это не то же самое, как foo.empty
или if (foo) { }
. API .empty
, похоже, не обнаруживает чистой виртуальности метода.
Не могли бы вы привести конкретный пример функции «boost :: function, которая оказывается чисто виртуальной»? –
Как вам удалось создать экземпляр класса, содержащего чистую виртуальную функцию? Похоже, вы вызываете 'doStuff()' откуда-то не должно быть (например, изнутри конструктора или деструктора класса в иерархии наследования). – Praetorian
Чистые виртуальные точки в нулевом нет? Другое дело, что вам нужно привязать функцию к объекту, и это должно быть невозможно с чистым виртуальным –