如何使用swig从C ++中包装最终的tempate类?

时间:2016-11-12 03:57:29

标签: c++ c++11 templates swig

我试图将一个标记为C ++的模板包装成C#但没有成功。 Swig会说“模板'测试'未定义”

如果我删除了最后一个关键字,但标题不在我的控制范围内,则可以正常工作。

%module SwigTest
template <typename T>
class Test final
{
    public:
    T a;
};
%template(TestBool)  Test <bool>;

最后是否会以任何方式影响名称?我试过了

%template(TestBool)  Test final <bool>;

和类似的组合但没有成功。

1 个答案:

答案 0 :(得分:2)

看起来SWIG还不了解final。您可以通过SWIG中的预处理器轻松解决此问题:

%module SwigTest

#define final

template <typename T>
class Test final
{
    public:
    T a;
};
%template(TestBool)  Test <bool>;

这不会产生任何负面影响。