共用方式為


HOW TO:使用 interior_ptr 關鍵字宣告實值型別 (C++/CLI)

interior_ptr實值型別可以使用。

重要

此功能的語言支援的/clr編譯器選項,但非/ZW編譯器選項。

範例

t19s4hxx.collapse_all(zh-tw,VS.110).gif描述

下列C++/CLI範例會示範如何使用interior_ptr與實值型別。

t19s4hxx.collapse_all(zh-tw,VS.110).gif程式碼

// 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(zh-tw,VS.110).gifOutput

1
2
2
3
3
3

範例

t19s4hxx.collapse_all(zh-tw,VS.110).gif描述

在實值型別中, this指標會評估為 interior_ptr。

本文中的非-靜態成員函式實值型別的V, this是型別的運算式interior_ptr<V>的值是函式會呼叫物件的位址。

t19s4hxx.collapse_all(zh-tw,VS.110).gif程式碼

// 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
   }
};

範例

t19s4hxx.collapse_all(zh-tw,VS.110).gif描述

下列範例會示範如何使用傳址運算子具有靜態成員。

靜態的 Visual C++ 型別成員的位址,會產生原生指標。 靜態的實值型別成員的位址是Managed指標,因為實值型別成員會在執行階段堆積上配置,可移動記憶體回收行程。

t19s4hxx.collapse_all(zh-tw,VS.110).gif程式碼

// 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(zh-tw,VS.110).gifOutput

22
23
hello

請參閱

參考

interior_ptr (C++/CLI)