我有一个带有重载方法的 C# 类库,一个方法有一个 ref 参数,另一个有一个 value 参数。我可以在 C# 中调用这些方法,但在 C++/CLI 中无法正确调用。似乎编译器无法区分这两种方法。
这是我的 C# 代码
namespace test {
public class test {
public static void foo(int i)
{
i++;
}
public static void foo(ref int i)
{
i++;
}
}
}
和我的 C++/CLI 代码
int main(array<System::String ^> ^args)
{
int i=0;
test::test::foo(i); //error C2668: ambiguous call to overloaded function
test::test::foo(%i); //error C3071: operator '%' can only be applied to an instance of a ref class or a value-type
int %r=i;
test::test::foo(r); //error C2668: ambiguous call to overloaded function
Console::WriteLine(i);
return 0;
}
我知道在 C++ 中我不能声明重载函数,其中函数签名的唯一区别是一个接受一个对象,另一个接受一个对象的引用,但在 C# 中我可以。
这是 C# 支持但 C++/CLI 不支持的功能吗?有什么解决方法吗?