私はここで何かを見逃しているに違いないと思います。私はこれを行うことができますSWIGとC++のコンストラクタ
%module(naturalvar=1) Value
%{
#include "value.h"
%}
%include "value.h"
とPythonのラッパー・コードを作成:、のようなものをシンプルなSWIGインタフェースファイルを作成した後
class Value {
public:
Value();
Value(const char *val);
void append(const Value &val);
private:
...
};
: のは、私は次のコンストラクタを宣言したC++クラスがあるとしましょう:
>>> 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 &'
Value(const char * value)コンストラクタを使用する方法はわかっていますが、appendメソッドに渡される文字列をValueオブジェクトにフィード/変換する方法を理解するにはどうすればよいですか。 ヤコブサイモン・Gaarde
Pythonは暗黙的な変換をサポートしていないようです(またはSWIGは暗黙的なコンストラクタを暗黙的な変換に変換しません) –