【问题标题】:"No type checking rule" error only when I supply a type checking rule仅当我提供类型检查规则时出现“无类型检查规则”错误
【发布时间】:2015-06-03 00:43:31
【问题描述】:

我有一个主要用作 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) 不支持('boost: 没有类型检查规则: :shared_ptr')。

【问题讨论】:

    标签: c++ boost swig


    【解决方案1】:

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

    %shared_ptr(mynamespace::MyClass)
    %typemap(typecheck, precedence=SWIG_TYPECHECK_POINTER) boost::shared_ptr<mynamespace::MyClass> {
        // always OK, dummy for testing.
        $1 = SWIG_IsOK(1);
    }
    

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

    【讨论】:

    • 太棒了。我今天刚遇到同样的问题,我发现了这个问题。我没有将 SO 视为我的个人知识数据库,但是,我们开始了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-26
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多