Freigeben über


interior_ptr (C++/CLI)

Ein innerer Zeiger deklarieren einen Zeiger in einen Verweistyp, jedoch nicht auf das Objekt selbst. Ein innerer Zeiger kann auf einem Bezugshandle, Werttyp, eingepacktes Typhandle, Member eines verwalteten Typs oder ein Element eines verwalteten Arrays wird.

Alle Laufzeiten

(Es gibt keine Hinweise für diese Sprachfunktion, die für alle Laufzeiten gültig sind.)

Windows-Runtime

(Es gibt keine Hinweise für diese Sprachfunktion, die nur für Windows-Runtime gelten.)

Voraussetzungen

Compileroption: /ZW

Common Language Runtime

Im folgenden Syntaxbeispiel zeigt einen inneren Zeiger.

Syntax

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

Parameter

  • cv_qualifier
    const oder Qualifizierer volatile.

  • type
    Der initializer-Typ.

  • var
    Der Name der Variablen interior_ptr.

  • initializer
    Ein Member eines Referenztyps, des Elements eines verwalteten Arrays oder einem anderen Objekt, das auf einem systemeigenen Zeiger zuweisen können.

Hinweise

Ein systemeigener Zeiger ist nicht in der Lage, ein Element zu verfolgen, da sein Speicherort auf dem verwalteten Heap ändern, der von den verschobenen Instanzen des Garbage Collectors eines Objekts entsteht. Damit ein Zeiger ordnungsgemäß die Instanz, die Common Language Runtime muss den Zeiger auf das neu positionierbare Objekt aktualisieren verweist.

interior_ptr stellt eine Obermenge der Funktionalität eines systemeigenen Zeiger dar. Daher alles kann, das auf einem systemeigenen Zeiger zugewiesen werden kann, auch zugewiesen sind interior_ptr. Ein innerer Zeiger ist zulässig, um den gleichen Satz von Vorgängen wie systemeigene Zeiger, einschließlich den Vergleich und Zeigerarithmetik auszuführen.

Ein innerer Zeiger kann auf dem Stapel nur deklariert werden. Ein innerer Zeiger kann nicht als Member einer Klasse deklariert werden.

Da innere Zeiger nur vom Stapel vorhanden und nehmen die Adresse von Erträgen eines inneren Zeigers einen nicht verwalteten Zeiger.

interior_ptr enthält eine implizite Konvertierung in bool, die dessen Verwendung in Bedingungsanweisungen zulässt.

Informationen dazu, wie Sie einen inneren Zeiger, der auf ein Objekt verweist, das nicht auf dem Heap der Garbage Collection verschoben werden kann, finden Sie unter 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 zum inneren Zeiger, finden Sie unter

Voraussetzungen

Compileroption: /clr

Beispiele

Beispiel

Das folgende Beispiel zeigt, wie ein innerer Zeiger in einen Verweistyp 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);
}

Ausgabe

123

Siehe auch

Konzepte

Komponentenerweiterungen für Laufzeitplattformen