2016-07-15 1 views
1

Я не могу выполнить SWIG-функцию, которая возвращает карту указателей на экземпляры класса. Я получаю ошибки компиляции, когда сгенерированный код SWIG компилируется.ошибка C2039: 'type_name': не является членом 'swig :: черт <Bar>'

ошибка C2039: 'type_name': не является членом 'swig::traits<Bar>'

Вот мой .и файл

class Foo 
{ 
... 
}; 

class Bar 
{ 
... 
}; 

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

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

ответ

1

Добавьте следующий код TypeMap в .i файл перед % шаблона. Обратите внимание на отсутствие «*» после имени класса в возвращаемой строке.

%{ 
    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

Смежные вопросы