klasy abstrakcyjne z C++ do C#

0

Chciałbym zrobić taki myk :
w C++ dll'ce mam funkcję która zwraca wskaźnik na obiekt klasy ICos gdzie ICos to jest abstrakcyjna klasa która ma same funkcje czysto wirtualne dziedziczona przez jakaś tam implementację czyli gdzieś w kodzie mam

ICos * retPtr()
{
   ICos * cosPtr = new CCos; // gdzie CCos to jest właśnie implementacja ICos
   return cosPtr;
}

i w C# miałbym header albo jakoś w inny sposób zaimportowany ICos i bym sobie korzystał z tego

[DllImport("libka.dll")]
private static extern ICos * /* heh nie wiem czy w C# można coś takiego zwracać */ retPtr();
ICos cos = retPtr();

no i teraz mógłbym sobie używać cos zgodnie z interfejsem ICos

czy taka współpraca między C++ a C# jest możliwa ??

0

Nie bardzo, mechanizmy klas w c++ i c# sa zupelnie rozne. Nie mozesz sobie ot tak korzystac z klasy napisanej w c++ w c#.

0

hmm czyli jedyne wyjście to wrapować każdą f samodzielnie ...

chyba że przez COM'a ?

0
macszur napisał(a)

czy taka współpraca między C++ a C# jest możliwa ??

Tak, pod warunkiem że użyjesz managed c++. Musisz zadeklarować w c++ interfejs (słówko kluczowe __interface), zbudować dll'ke. Taką dll'ke możesz używać w c#.

Wolverine napisał(a)

Nie bardzo, mechanizmy klas w c++ i c# sa zupelnie rozne. Nie mozesz sobie ot tak korzystac z klasy napisanej w c++ w c#.
.NET unifikuje te mechanizmmy. Dlatego w manged c++ np. można deklarować interfejsy, niedostępne jest wielodziedziczenie itp.

0

To już lepiej C++/CLI - składnia bez '__' ;P

1 użytkowników online, w tym zalogowanych: 0, gości: 1