Temat: Eclipse C++
Dariusz Bujak:
Dzięki za pomoc wystarczało usunąć ref
z przed
czyli zmienić
ref class Klient
{
};
na
class Klient
{
};
a tak swoją droga to orientuje sie może ktoś co to jest ten ref
i do czego służy?
Cześć,
Słuchaj, napisz może co w ogóle chcesz zrobić a my napiszemy Ci jak to osiągnąć. Z powyższego przykładu widać, że nie orientujesz się, czym się różni standardowy C++ od C++/CLI. Jeśli chcesz pisać aplikacje z GUI wybierz C#. Jeśli masz kawałek kodu niezarządzanego, który chcesz użyć w kodzie zarządzanym to masz dwie opcje: DllImport w C# lub napisanie wrappera w C++/CLI. Oczywiście możesz też napisać to samo, ale w kodzie zarządzanym (przepisać kod). Mixed Mode C++/CLI to moim zdaniem potężne narzędzie w przypadku integracji kodu zarządzanego z niezarządzanym.
ref przed klasą oznacza, że klasa jest typem zarządzanym, co z kolei oznacza, że jej obiekty będą odkładane na zarządzanej stercie. Moment destrukcji obiektu wybierze za Ciebie Garbage Collector. Są to typy obsługiwane przez platformę .NET. Usunięcie ref oznajmia kompilatorowi, że jest to definicja klasy, która jest typem niezarządzanym. Obiekty tego typu będą żyły na stercie niezarządzanej. Sam musisz zadbać o ich zwolnienie. Są to standardowe obiekty z "normalnego" C++. Mixed Mode umożliwia użycie (oraz definiowanie) tych dwóch typów w jednej jednostce kompilacyjnej (jednym pliku, jednej klasie itd). Co więcej, możesz zrobić zarządzany typ, w którym znajdą się niezarządzane pola, lub na odwrót. W jednej metodzie możesz jednocześnie korzystać z obiektów niezarządzanych (tworzonych np. przez wskaźnik * operatorem new) oraz obiektów zarządzanych, tworzonych za pomocą operatora ^ i gcnew. Potęga!
Oto dyskusja na temat wad i zalet C++/CLI:
http://www.goldenline.pl/forum/2512834/c-cli-kto-jeszc...
Jeśli jesteś nowy w świecie .NET proponuję nie pchać się w te rejony. Bardzo szybko się zrazisz. Weź C# i będziesz szczęśliwy.