Gewusst wie: Deklarieren von Werttypen mit dem interior_ptr-Schlüsselwort (C++/CLI)

interior_ptr kann mit einem Werttyp verwendet werden.

Wichtiger HinweisWichtig

Diese Sprachfunktion wird von der /clr - Compileroption, aber nicht von der /ZW Compileroption unterstützt.

Beispiel

t19s4hxx.collapse_all(de-de,VS.110).gifBeschreibung

Im Folgenden C++/CLI Beispiel wird gezeigt, wie interior_ptr mit einem Werttyp verwendet.

t19s4hxx.collapse_all(de-de,VS.110).gifCode

// interior_ptr_value_types.cpp
// compile with: /clr
value struct V {
   V(int i) : data(i){}
   int data;
};

int main() {
   V v(1);
   System::Console::WriteLine(v.data);

   // pointing to a value type
   interior_ptr<V> pv = &v;
   pv->data = 2;

   System::Console::WriteLine(v.data);
   System::Console::WriteLine(pv->data);

   // pointing into a value type
   interior_ptr<int> pi = &v.data;
   *pi = 3;
   System::Console::WriteLine(*pi);
   System::Console::WriteLine(v.data);
   System::Console::WriteLine(pv->data);
}

t19s4hxx.collapse_all(de-de,VS.110).gifOutput

1
2
2
3
3
3

Beispiel

t19s4hxx.collapse_all(de-de,VS.110).gifBeschreibung

In einem Werttyp wertet der this Zeiger auf ein interior_ptr aus.

Im Text einer nicht statischen Memberfunktion eines Werttyps V, ist this ein Ausdruck vom Typ interior_ptr<V> , dessen Wert die Adresse des Objekts, für das die Funktion aufgerufen wird.

t19s4hxx.collapse_all(de-de,VS.110).gifCode

// interior_ptr_value_types_this.cpp
// compile with: /clr /LD
value struct V {
   int data;
   void f() {
      interior_ptr<V> pv1 = this;
      // V* pv2 = this;   error
   }
};

Beispiel

t19s4hxx.collapse_all(de-de,VS.110).gifBeschreibung

Das folgende Beispiel zeigt, wie Sie den Adressoperator mit statischen Member verwendet.

Die Adresse eines statischen Visual C++-Typmembers führt zu einem systemeigenen Zeiger.Die Adresse eines statischen Werttyp members ist ein Werttyp, da verwalteter Zeiger auf den Member heap Laufzeit zugeordnet ist und vom Garbage Collector verschoben werden kann.

t19s4hxx.collapse_all(de-de,VS.110).gifCode

// interior_ptr_value_static.cpp
// compile with: /clr
using namespace System;
value struct V { int i; };

ref struct G {
   static V v = {22}; 
   static int i = 23; 
   static String^ pS = "hello"; 
};

int main() {
   interior_ptr<int> p1 = &G::v.i;
   Console::WriteLine(*p1);

   interior_ptr<int> p2 = &G::i;
   Console::WriteLine(*p2);

   interior_ptr<String^> p3 = &G::pS;
   Console::WriteLine(*p3);
}

t19s4hxx.collapse_all(de-de,VS.110).gifOutput

22
23
hello

Siehe auch

Referenz

interior_ptr (C++/CLI)