• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

co oznacza "daszek" po nazwie klasy w c++ (CX)

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
+1 głos
412 wizyt
pytanie zadane 7 czerwca 2022 w C i C++ przez PiotrB Nowicjusz (200 p.)
edycja 7 czerwca 2022 przez adrian17

Cześć,

Mamy taki fragment kodu:

HttpContext^ httpCont = HttpContext::Current;

Moje pytanie brzmi, w jakim celu używany ten znak "daszek" po nazwie klasy HttpContext^ ? Pracuje nad kodem po innym developerze i wiem tylko że w pewnych miejscach muszę go używać ale chciałbym wiedzieć dlaczego :)

Będę wdzięczny za link, gdzie mógłbym o tym poczytać więcej. Oczywiście próbowałem szukać ale wszelkie próby kończyły się tylko na znalezieniu definicji XOR do której taki znak jest właśnie używany.

komentarz 7 czerwca 2022 przez adrian17 Mentor (354,120 p.)

Tylko zaznaczę że to nie jest C++. To jest customowy język Microsoftu pochodny od C++a, o nazwie C++/CLI lub C++/CX.

https://docs.microsoft.com/en-us/cpp/extensions/handle-to-object-operator-hat-cpp-component-extensions?view=msvc-170

Dlatego osoby pracujące normalnie z C++em raczej nie będą miały z tym doświadczenia i Ci z tym nie pomogą. A jak ktoś już siedzi w .NET'cie, to już prędzej użyje właściwego języka do tego jakim jest C#.

HttpContext context = HttpContext.Current;

 

2 odpowiedzi

+2 głosów
odpowiedź 7 czerwca 2022 przez Wiciorny Ekspert (281,270 p.)

To jest wskaźnik, tylko dedykowany: przez was 
Reprezentuje zarządzany wskaźnik, ^ wskazuje na obiekt odśmiecający (garbage-collector) -  obsługiwany przez framework, pewnie który macie zdefiniowany.
Skoro pracujesz: może wypadałoby zapytać zespołu, to zła praktyka jest "bycia cicho", np. ze względu na strach przed złą opinią, broń boże kto pytana nie błądzi, a zobacz ile czasu zyskałbyś pytając kogoś z developerów. 

Tu masz informacje co do tego : https://docs.microsoft.com/en-us/previous-versions/cxx6f46y(v=vs.100)?redirectedfrom=MSDN
 

W Visual C++ 2002 i Visual C++ 2003 __gc * był używany do deklarowania wskaźnika zarządzanego. Jest to zastąpione ^ w Visual C++ 2005, na przykład ArrayList^ al = gcnew ArrayList();.

https://docs.microsoft.com/en-us/cpp/extensions/handle-to-object-operator-hat-cpp-component-extensions?redirectedfrom=MSDN&view=msvc-170

HttpNativeObject * n = new HttpNativeObject ();
NativeObjectMenaged^ m = gcnew NativeObjectMenaged();


Co ważne w twoim przypadku Ten przykład pokazuje, jak utworzyć wystąpienie typu referencyjnego na zarządzanym stercie, również, że można zainicjować jeden uchwyt z innym, co powoduje powstanie dwóch odwołań do tego samego obiektu na zarządzanym stercie z wyczyszczonymi elementami. 

1
komentarz 7 czerwca 2022 przez PiotrB Nowicjusz (200 p.)
Bardzo dziękuję za wyjaśnienie!.

ps. Zapytać niestety nie mam już kogo (wpadłem na ten pomysł ;)). Ale nie będę tutaj wchodzić w szczegóły.
komentarz 7 czerwca 2022 przez Wiciorny Ekspert (281,270 p.)
okej, nie wnikam niemniej jednak na przyszłość, sam popełniałem błąd na początku drogi, że wstydziłem się np. pytań i szukałem sam, co teraz po latach uważam, za totalnie głupię, bo właśnie dzięki rozmową z zespołem nabiera się najwięcej doświadczenia i wiedzy o ile faktycznie taki ktoś jest.

Powodzenia
0 głosów
odpowiedź 7 czerwca 2022 przez Hesoyam Obywatel (1,100 p.)
A co się dzieje gdy go nie wstawisz? Masz jakiś komunikat?

Podobne pytania

0 głosów
1 odpowiedź 124 wizyt
0 głosów
1 odpowiedź 481 wizyt
pytanie zadane 25 października 2017 w C# przez Stami Gaduła (3,790 p.)

93,439 zapytań

142,431 odpowiedzi

322,677 komentarzy

62,802 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...