我有一个主要用作boost :: shared_ptr的类。我试图包装一些重载函数,并且需要添加一个类型检查规则,以便从Python端提供一些功能。
当我告诉SWIG要为我的类使用共享指针时,SWIG包装器构建并编译正常。
%shared_ptr(mynamespace::MyClass)
但是,一旦我添加了类型检查规则,SWIG就会告诉我没有提供类型检查规则!这是我的SWIG包装代码:
%shared_ptr(mynamespace::MyClass)
%typemap(typecheck) boost::shared_ptr<mynamespace::MyClass> {
// always OK, dummy for testing.
$1 = SWIG_IsOK(1);
}
我得到的错误信息是:
/scr/dbw/bld/include/header.h:509:警告467:不支持重载方法mynamespace :: get_contacts(boost :: shared_ptr&lt; mynamespace :: MyClass&gt;)(没有&#的类型检查规则39; boost :: shared_ptr&lt; mynamespace :: MyClass&gt;&#39;)。
答案 0 :(得分:0)
我不明白为什么,但在这种情况下,我需要为类型检查提供优先权:
%shared_ptr(mynamespace::MyClass)
%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER) boost::shared_ptr<mynamespace::MyClass> {
// always OK, dummy for testing.
$1 = SWIG_IsOK(1);
}
对于其他类型的攻击,我当然不需要提供优先权。