У меня есть библиотека классов С# с перегруженными методами, а один метод имеет параметр ref, а другой - параметр значения. Я могу назвать эти методы в С#, но я не могу понять это правильно в С++/CLI. Кажется, компилятор не может отличить эти два метода.
Вот мой код С#
namespace test {
public class test {
public static void foo(int i)
{
i++;
}
public static void foo(ref int i)
{
i++;
}
}
}
и мой код С++/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;
}
Я знаю, что в С++ я не могу объявлять функции перегрузки, где единственная разница в сигнатуре функции заключается в том, что объект берет объект, а другой ссылается на объект, но на С# я могу.
Является ли эта функция поддерживаемой в С#, но не в С++/CLI? Есть ли способ обхода?