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
Postupy: Deklarace a použití vnitřních ukazatelů a spravovaných polí (C++/CLI)
Postupy: Deklarace hodnotových typů s použitím klíčového slova interior_ptr (C++/CLI)
Postupy: Přetížení funkcí s vnitřními a nativními ukazateli (C++/CLI)
Postupy: Deklarace vnitřních ukazatelů s použitím klíčového slova const (C++/CLI)
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