我想我必须在这里失去一些东西,我希望有人能帮助。 比方说,我有以下构造函数声明的C++类:SWIG和C++构造函数
%module(naturalvar=1) Value
%{
#include "value.h"
%}
%include "value.h"
而对于Python的我能做到这一点创建包装代码:
class Value {
public:
Value();
Value(const char *val);
void append(const Value &val);
private:
...
};
创建一个简单的SWIG接口文件,喜欢的东西后:
>>> import Value
>>> v1 = Value.Value()
>>> v2 = Value.Value("test")
>>> v1.append(v2)
>>> v1.append(Value.Value("test"))
,但我不能做到这一点:
>>> v1.append("test")
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/home/jakob/dev/test/Value.py in append(self, *args)
298 def resize(self, *args): return _Value.Value_resize(self, *args)
299 def isValidIndex(self, *args): return _Value.Value_isValidIndex(self, *args)
--> 300 def append(self, *args): return _Value.Value_append(self, *args)
301 def get(self, *args): return _Value.Value_get(self, *args)
302 def removeMember(self, *args): return _Value.Value_removeMember(self, *args)
TypeError: in method 'Value_append', argument 2 of type 'Value const &'
显然它知道如何使用值(为const char *值)构造的,但我怎么让它明白传递给append方法字符串应喂/转换为值对象。
问候 雅各布·西蒙Gaarde
它看起来像Python不支持隐式转换(或痛饮不转隐构造成隐式转换) –