C++ &引用;“无类型检查规则”;仅当我提供类型检查规则时出错

C++ &引用;“无类型检查规则”;仅当我提供类型检查规则时出错,c++,boost,swig,C++,Boost,Swig,我有一个主要用作boost::shared_ptr的类。我试图包装一些重载函数,需要添加一个类型检查规则,以便从Python端提供一些功能 当我告诉SWIG要为我的类使用共享指针时,SWIG包装器可以很好地构建和编译 %shared_ptr(mynamespace::MyClass) 然而,一旦我添加了一个类型检查规则,SWIG告诉我没有提供任何类型检查规则!以下是我的SWIG包装代码: %shared_ptr(mynamespace::MyClass) %typemap(typecheck)

我有一个主要用作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);
}
%shared\u ptr(mynamespace::MyClass)
%typemap(typecheck)boost::shared\u ptr{
//始终正常,用于测试的假人。
$1=SWIG_IsOK(1);
}
我收到的错误消息是:


/scr/dbw/bld/include/header.h:509:警告467:重载方法mynamespace::get_contacts(boost::shared_ptr)不受支持(没有“boost::shared_ptr”的类型检查规则)。

我不明白为什么,但在这种情况下,我需要为类型检查提供优先级:

%shared_ptr(mynamespace::MyClass)
%typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER) boost::shared_ptr<mynamespace::MyClass> {
    // always OK, dummy for testing.
    $1 = SWIG_IsOK(1);
}
%shared\u ptr(mynamespace::MyClass)
%typemap(typecheck,priority=SWIG\u typecheck\u指针)boost::shared\u ptr{
//始终正常,用于测试的假人。
$1=SWIG_IsOK(1);
}

对于其他类型的检查,我当然不需要提供优先级。

太棒了。我今天也遇到了同样的问题,我发现了这个问题。我还没有想到我的个人知识数据库,但是,我们开始了。