I am using Cython to wrap a set of C++ classes, allowing a Python interface to them. Example Code is provided below:
BaseClass.h:
#ifndef __BaseClass__
#
Honestly, this looks like a bug. The object you're passing in is an instance of the desired class, but it still throws an error. You may want to bring it up on the cython-users mailing list so the main developers can look at it.
A possible workaround would be to define a fused type that represents both types of arguments and use that inside the method. That seems like overkill though.