Sdílet prostřednictvím


interior_ptr (C++/CLI)

Vnitřní ukazatel prohlašuje ukazatel uvnitř typu odkaz, ale nikoli samotný objekt.Vnitřní ukazatel může přejděte na příkaz odkaz úchyt, typ hodnoty, zabalený typ popisovače, typ spravovaného člena nebo prvek spravovaného pole.

Všechny moduly runtime

(Neexistují žádné poznámky k této funkci jazyka platící pro všechny moduly runtime.)

Prostředí Windows Runtime

(Žádné informace o této funkci jazyka neplatí pouze pro architekturu Windows Runtime.)

Požadavky

Možnost kompilátoru: /ZW

Common Language Runtime

V následujícím příkladu syntaxe ukazuje vnitřní ukazatel.

Syntax

cli::interior_ptr<cv_qualifier type> var = &initializer;

Parametry

  • cv_qualifier
    Const nebo volatile kvalifikátory.

  • type
    Typ initializer.

  • var
    Název interior_ptr proměnné.

  • initializer
    Člen typ odkazu, prvek spravovaného pole nebo jiný objekt je možné přiřadit nativní ukazatele.

Poznámky

Nativní ukazatele není schopen sledovat položky jako změny jeho umístění na spravované haldě, která vyplývá z uvolňování přesunutí instance objektu.Chcete-li, aby ukazatel správně odkazovat na instanci modul runtime potřebuje aktualizovat ukazatel na objekt nově umístěné.

interior_ptr Představuje nadmnožinu přepínače funkce nativní ukazatele. Proto cokoli, co může být přiřazen k nativní ukazatele lze také přiřadit interior_ptr. Vnitřní ukazatel je oprávněn provádět stejnou sadu operací jako nativní ukazatele, včetně porovnání a aritmetika ukazatele.

Vnitřní ukazatel lze deklarovat pouze v zásobníku. Vnitřní ukazatel nelze deklarovat jako člena třídy.

Vzhledem k tomu, že vnitřní ukazatele existují pouze v zásobníku, převzetím adresy vnitřní ukazatel poskytuje nespravované ukazatel.

interior_ptrmá implicitní převod na bool, což umožňuje jeho použití v podmíněné příkazy.

Informace o tom, jak deklarovat vnitřní ukazatel, který odkazuje na objekt, který nelze přesunout na haldě uvolňování paměti, viz pin_ptr.

Operace interior_ptr je k dispozici v oboru názvu cli. Další informace naleznete v tématu Obory názvů Platform, default a cli (rozšíření komponent C++).

Další informace o vnitřní ukazatele viz

Požadavky

Možnost kompilátoru: /clr

Příklady

Příklad

Následující příklad ukazuje, jak deklarovat a použít vnitřní ukazatel na typ odkazu.

// interior_ptr.cpp
// compile with: /clr
using namespace System;

ref class MyClass {
public:
   int data;
};

int main() {
   MyClass ^ h_MyClass = gcnew MyClass;
   h_MyClass->data = 1;
   Console::WriteLine(h_MyClass->data);

   interior_ptr<int> p = &(h_MyClass->data);
   *p = 2;
   Console::WriteLine(h_MyClass->data);

   // alternatively
   interior_ptr<MyClass ^> p2 = &h_MyClass;
   (*p2)->data = 3;
   Console::WriteLine((*p2)->data);
}

Výsledek

123

Viz také

Koncepty

Rozšíření komponent pro platformy běhového prostředí