diff --git a/unittest/bind_virtual_factory.cpp b/unittest/bind_virtual_factory.cpp
index 30ac0afc0dd06fe6cdd70fc2715bdb2a6be57d94..3bfab6dd73f9d1d7710079dbdbd3cba2c8fffdcf 100644
--- a/unittest/bind_virtual_factory.cpp
+++ b/unittest/bind_virtual_factory.cpp
@@ -73,7 +73,7 @@ struct VirtualClassWrapper : MyVirtualClass, bp::wrapper<MyVirtualClass> {
 
   shared_ptr<MyVirtualData> createData() const override {
     if (bp::override fo = this->get_override("createData")) {
-      bp::object result = fo();
+      bp::object result = fo().as<bp::object>();
       return bp::extract<shared_ptr<MyVirtualData> >(result);
     }
     return default_createData();