错误 C2039:'type_name':不是 'swig::traits<Bar>' 的成员

error C2039: 'type_name' : is not a member of of 'swig::traits<Bar>'

我无法 SWIG 包装 returns 指向 class 实例的指针映射的函数。编译生成的 SWIG 代码时出现编译错误。

error C2039: 'type_name' : is not a member of 'swig::traits<Bar>'

这是我的 .i 文件

class Foo
{ 
... 
}; 

class Bar
{
...
};

%template(MapFooPtrBarPtr) std::map<Foo*, Bar*>; 

std::map<Foo*, Bar*> GetMap();

将以下类型映射代码添加到 .i 文件中的 %template 之前。请注意 return 字符串中 class 名称后缺少“*”。

%{
    namespace swig {
    template <> struct traits<Bar>
    {
        typedef pointer_category category;
        static const char* type_name()
        {
            return "Bar";
        }
    };
    }
%}

从以下位置获得解决方案:http://swig.10945.n7.nabble.com/std-containers-and-pointers-td3728.html