I am having some troubles passing a cpp object to as a parameter to a function of a python object.

Assume I have a class in a namespace

namespace test {

class TestClass {
public:
    int func() const { return 100; }
}:

// And a wrapper for it
class TestWrapper : QObject {
    Q_OBJECT
public slots:
    int func(TestClass* o) const { return o->func(); }
};

Q_DECLARE_METATYPE(test::TestClass)
Q_DECLARE_OPAQUE_POINTER(test::TestClass*)
Q_DECLARE_METATYPE(test::TestClass*)
}

Now, in my code, I want to call a function that needs to have access to the TestClass's func().
First, I register stuff

void registerTestClass()
{
    qRegisterMetaType<test::TestClass>("TestClass");

    FaceIdentifier faceId;
    PythonQt::self()->registerCPPClass("TestClass", "", "", PythonQtCreateObject<test::TestWrapper>);
}

And then I want to call a method with a TestClass instance as a ref parameter:

void runFuncFromPy(PythonQtObjectPtr pyObj)
{
    TestClass t;

    pyObj.call("callTest", QVariantList() << qVariantFromValue(&t));
}

Finally, the python code reads something line:

class TestCaller:
    def callTest(self, testObj):
        testObj.func()

The interpreter, however, with an error like:
AttributeError: test::TestClass has no attribute named 'func'

Could you tell me what am I doing wrong? How am I suppost to associate a wrapper with my instance of TestClass for passing parameters?