2014-09-19 91 views
0

我是新来的swig。我想在Swig中创建类指针的映射。如下如何在swig中创建地图?

class A; 
class B; 

namespace std { 
%template(MYMap) map<A*, B*>; 
} 

这是行不通的。

但如果我创建映射这样

namespace std { 
%template(MYMap) map<int, int>; 
} 

它的工作原理。

我认为它适用于原始内置类型。 谢谢!

+0

为什么'B类'开始于大写'C'? – matsjoyce 2014-10-04 09:33:27

回答

0

我会在评论中提出这个问题,因为我没有办法尝试,但是输入太困难了。尝试的typedef为指针类型:

typedef A *APtr; 
typedef B *BPtr; 

%template(MyMap) map<APtr, BPtr>; 
+0

我试过这个但不起作用 – 2014-09-22 07:09:00

+0

@ D'JayPatil什么是“不能正常工作”的意思? – Gene 2014-09-22 13:59:15

+0

代码不编译它给出了一些奇怪的错误。 – 2014-09-23 04:48:22

0

添加此线附近的.i文件的顶部:

%include "std_map.i" 

这将创建的std ::地图typemaps。同时确保您使用的是class B而不是Class B

+0

我已经添加了这个 – 2014-10-02 05:20:22

+0

@DJayPatil更新了 – Schollii 2014-10-03 03:20:02