interior_ptr (C++/CLI)
Ein innerer Zeiger auf einen Zeiger deklariert, jedoch nicht in einem Referenztyp auf das Objekt selbst.Ein innerer Zeiger kann zu einem geschachtelten Werttyp, für Verweise Typhandle, Member eines verwalteten Typs oder ein Element eines verwalteten Arrays wird.
Alle Laufzeiten
(Es gibt keine Hinweise für diese Sprachfunktion, die auf allen Laufzeiten beziehen).
Windows Runtime
(Es gibt keine Hinweise für diese Sprachfunktion, die nur für Windows gelten. Runtime)
Anforderungen
Compileroption: /ZW
Common Language Runtime
Im folgenden Beispiel wird ein innerer Zeiger Syntax.
Syntax
cli::interior_ptr<cv_qualifier type> var = &initializer;
Parameter
cv_qualifier
const oder volatile Qualifizierer.type
Der Typ der Initialisierung.Variable
Der Name der interior_ptr-Variablen.Initialisierung
Ein Member eines Verweistyps des Elements eines verwalteten Arrays oder eines anderen Objekts, den Sie an einen systemeigenen Zeiger zuweisen können.
Hinweise
Ein systemeigener Zeiger ist nicht in der Lage, ein Element zu verfolgen, als Speicherort auf dem verwalteten Heap geändert wird, der von den verschiebbaren Instanzen des Garbage Collectors eines Objekts ergibt.Damit ein Zeiger ordnungsgemäß Instanz, die die Laufzeit muss den Zeiger auf den neu positionierten Aktualisierung Objekt verweist.
interior_ptr stellt eine Obermenge der Funktionalität eines systemeigenen Zeiger dar.Daher kann alles, das auf einem systemeigenen Zeiger zugewiesen werden kann, auch interior_ptr zugewiesen werden.Ein innerer Zeiger kann den gleichen Satz von Vorgängen wie systemeigene Zeiger, einschließlich Vergleich und Zeigerarithmetik auszuführen.
Ein innerer Zeiger kann nur auf dem Stapel deklariert werden.Ein innerer Zeiger kann nicht als Member einer Klasse deklariert werden.
Da innere Zeiger nur auf dem Stapel vorhanden sind, die Adresse eines inneren Zeigers nehmend liefert einen nicht verwalteten Zeiger.
interior_ptr hat eine implizite Konvertierung bool, die ihre Verwendung in Bedingungsanweisungen zulässt.
Informationen dazu, wie ein innerer Zeiger auf ein Objekt verweist, das nicht auf dem Heap der Garbage Collection verschoben werden kann, finden Sie pin_ptr deklariert.
interior_ptr befindet sich im CLI-Namespace.Weitere Informationen finden Sie unter Platform-, default- und cli-Namespaces (Komponentenerweiterungen für C++).
Weitere Informationen über innere Zeiger finden Sie unter
Gewusst wie: Deklarieren und Verwenden von inneren Zeigern und verwalteten Arrays (C++/CLI)
Gewusst wie: Deklarieren von Werttypen mit dem interior_ptr-Schlüsselwort (C++/CLI)
Gewusst wie: Überladen von Funktionen mit inneren und systemeigenen Zeigern (C++/CLI)
Gewusst wie: Deklarieren von inneren Zeigern mit dem const-Schlüsselwort (C++/CLI)
Anforderungen
Compileroption: /clr
Beispiele
Beispiel
Im folgenden Beispiel wird gezeigt, wie ein innerer Zeiger auf einen Referenztyp deklariert und verwendet.
// 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);
}
Output