У меня есть библиотека классов C #с перегруженными методами, и один метод имеет параметр ref, а другой — параметр значения. Я могу вызывать эти методы в 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? Есть ли обходной путь?