我在C ++中有一个类TInt,它包含一个整数值并提供了一些方法。它还有一个接受int的默认构造函数,它允许我在c ++中说:
TInt X=3;
我想使用SWIG将此类和其他类导出到C#,我无法弄清楚我需要做什么才能在C#中写入同一行:
TInt X=3;
现在我收到预期的错误“无法将'int'隐式转换为'TI'”
事情更复杂,因为其他类中也有接受TInt作为参数的方法。例如,TIntV是包含TInt向量的类,并且具有方法Add(TInt& Val)。 在C#中,我只能将此方法称为:
TIntV Arr;
Arr.Add(new TInt(3));
非常感谢任何帮助。
格里
答案 0 :(得分:4)
我找到了一个完整的解决方案,其中包括席欢的答案:
在SWIG的界面文件(* .i)中,我添加了以下几行:
%typemap(cscode) TInt %{
//this will be added to the generated wrapper for TInt class
public static implicit operator TInt(int d)
{
return new TInt(d);
}
%}
这会将运算符添加到生成的.cs文件中。 要记住的一件事(花了我一个小时来修复它)是这个内容必须在导入c ++类的代码之前声明的接口文件中。
答案 1 :(得分:3)