仅当我提供类型检查规则时,“无类型检查规则”错误

时间:2015-04-15 20:47:41

标签: c++ boost swig

我有一个主要用作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;)。

1 个答案:

答案 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);
}

对于其他类型的攻击,我当然不需要提供优先权。