Mam bibliotekę klasy C# z przeciążonymi metodami, a jedna metoda ma parametr ref, a druga ma parametr wartości. Mogę nazwać te metody w języku C#, ale nie mogę uzyskać tego poprawnie w C++/CLI. Wydaje się, że kompilator nie może odróżnić tych dwóch metod.Jak wywołać przeciążone funkcje C#, których jedyną różnicą jest parametr przekazany przez ref lub nie w C++/cli
Oto mój kod C#
namespace test {
public class test {
public static void foo(int i)
{
i++;
}
public static void foo(ref int i)
{
i++;
}
}
}
i mój kod 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;
}
wiem w C++ nie mogę zadeklarować funkcje przeciążenie gdzie jedyną różnicą w podpisie funkcją jest to, że jeden bierze obiekt, a drugi odwołuje się do obiektu, ale w języku C# mogę.
Czy jest to funkcja obsługiwana w języku C#, ale nie w C++/CLI? Czy istnieje jakieś obejście?
Czy masz prawdziwy przykład na świecie, kiedy może to być wymagane? – Jodrell
Czy próbowałeś go ze wskaźnikiem zamiast zmiennej? –
Czy to się jeszcze komplikuje? jeśli to też jest zaintrygowane! +1 –