Share via


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)

y0fh545k.collapse_all(de-de,VS.110).gifAnforderungen

Compileroption: /ZW

Common Language Runtime

Im folgenden Beispiel wird ein innerer Zeiger Syntax.

y0fh545k.collapse_all(de-de,VS.110).gifSyntax

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

y0fh545k.collapse_all(de-de,VS.110).gifParameter

  • 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.

y0fh545k.collapse_all(de-de,VS.110).gifHinweise

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

y0fh545k.collapse_all(de-de,VS.110).gifAnforderungen

Compileroption: /clr

y0fh545k.collapse_all(de-de,VS.110).gifBeispiele

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

  
  
  

Siehe auch

Konzepte

Komponentenerweiterungen für Laufzeitplattformen