У меня есть класс 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