Обертывание класса параметров шаблона шаблона с помощью SWIG

У меня есть класс C ++, подобный следующему:

template< template class ContainerType, typename MemberType>
class MyClass
{
  public:
    MyClass(ContainerType* volData);
}

, который я пытаюсь обернуть с помощью SWIG. Мой MyClass.i выглядит так:

%module MyClass
%{
  #include "SimpleContainer.h"
  #include "MyClass.h"
%}

%include "SimpleContainer.h"
%include "MyClass.h"

%template(MyClass_SimpleContainer_Int) MyClass;

Однако SWIG похоже, есть проблемы с параметром шаблона шаблона. При компиляции он жалуется на сообщение об ошибке:

MyClassPYTHON_wrap.cxx:30545:3: error: ‘ContainerType’ was not declared in this scope

Глядя на эту строку в сгенерированном коде, он содержит строку:

ContainerType< int > *arg1 = (ContainerType< int > *) 0 ;

По какой-то причине он дословно использует имя фиктивного шаблона как имя класса, хотя я сказал ему, что этот экземпляр класса должен иметь ContainterType SimpleContainer.

Есть ли способ обойти эту ошибку? Я нашел упоминание об этом в SWIG трекер , но я не мог понять обходной путь, упомянутый в последнем посте, а также этой ошибке 4 года.

Я использую SWIG 1.3.40 и GCC 4.5.1 в openSUSE 11.4

6
задан Milliams 2 June 2011 в 13:27
поделиться