Templates 无法使用swig包装模板静态函数
我试图包装一个简单的静态模板函数,如下所示:Templates 无法使用swig包装模板静态函数,templates,static,swig,Templates,Static,Swig,我试图包装一个简单的静态模板函数,如下所示: namespace ns { class A { public: template<typename T> static void func() {} }; } 我发现有人问过同样的问题,但遗憾的是没有答复。这是swig限制吗?需要特殊操作吗 下面是上面准备粘贴到.i文件中的几行: %module example %{ namespace ns { class A { public: te
namespace ns {
class A {
public:
template<typename T>
static void func() {}
};
}
我发现有人问过同样的问题,但遗憾的是没有答复。这是swig限制吗?需要特殊操作吗
下面是上面准备粘贴到.i文件中的几行:
%module example
%{
namespace ns {
class A {
public:
template<typename T>
static void func() {}
};
}
%}
%template(func_int) ns::A::func<int>;
现在我解决了这个问题,声明了一些swig可以更好地管理的虚拟函数:
namespace ns {
class A {
public:
template<typename T>
static void func() {}
static void funcT1() {func<T1>();}
static void funcT2() {func<T2>();}
};
}
我认为它足够干净,但我仍在寻找更合适的解决方案。现在我解决了这个问题,声明了一些swig可以更好地管理的虚拟函数:
namespace ns {
class A {
public:
template<typename T>
static void func() {}
static void funcT1() {func<T1>();}
static void funcT2() {func<T2>();}
};
}
我认为它足够干净,但我仍在寻找更合适的解决方案。您必须为它指定一种特定类型:
%template(func_int) ns::A::func<int>;
%template(func_float) ns::A::func<float>;
您必须为其指定特定类型:
%template(func_int) ns::A::func<int>;
%template(func_float) ns::A::func<float>;
是的,这正是我所做的,但我遇到了描述的错误。你试过这个吗?你成功了吗?也许你必须用我的答案结束。如果那没用,那你的i一定是出了什么问题。也许可以扩展你的帖子,让它包含一个完整但最小的。我重复了这个问题。完整且最小。我已经差不多回答了这个问题,但我添加了它。我也尝试了你的第二个建议,但没有任何区别。我把它放在那里,因为我有它在真正的代码中,但它真的没有区别。如果没有模板,错误是错误:未定义范围“A”错误:模板“A::func”未定义。是的,这正是我所做的,但我遇到了描述的错误。你试过这个吗?你成功了吗?也许你必须用我的答案结束。如果那没用,那你的i一定是出了什么问题。也许可以扩展你的帖子,让它包含一个完整但最小的。我重复了这个问题。完整且最小。我已经差不多回答了这个问题,但我添加了它。我也尝试了你的第二个建议,但没有任何区别。我把它放在那里,因为我有它在真正的代码中,但它真的没有区别。没有模板时,错误为错误:未定义范围“A”错误:模板“A::func”未定义。
%template(func_int) ns::A::func<int>;
%template(func_float) ns::A::func<float>;
namespace ns {
%template(func_int) A::func<int>;
%template(func_float) A::func<float>;
}