다음을 통해 공유


방법: interior_ptr 키워드를 사용하여 값 형식 선언(C++/CLI)

interior_ptr값 형식으로 사용할 수 있습니다.

중요중요

이 언어기능은 지원 하지는 /clr컴파일러옵션을 있지만으로 /ZW컴파일러옵션.

예제

t19s4hxx.collapse_all(ko-kr,VS.110).gif설명

다음 C++/CLI 를 사용 하는 방법을 보여 주는 예제는 interior_ptr값 형식을 사용 합니다.

t19s4hxx.collapse_all(ko-kr,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(ko-kr,VS.110).gifOutput

1
2
2
3
3
3

예제

t19s4hxx.collapse_all(ko-kr,VS.110).gif설명

값 형식에 this포인터를 interior_ptr를 평가 합니다.

본문에 있는 비-고정적인멤버-함수는값 형식V, this 형식의 식입니다 interior_ptr<V> 값을 가진개체에 대 한함수호출의 주소입니다.

t19s4hxx.collapse_all(ko-kr,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(ko-kr,VS.110).gif설명

다음 샘플에고정적인멤버와연산자의 주소를 사용 하는 방법을 보여 줍니다.

고정적인주소를원시포인터를 얻을 수 있습니다. 값 형식멤버런타임힙할당 되 고가비지 수집기에서 이동할 수 있기 때문에값 형식고정적인멤버의 주소는관리포인터입니다.

t19s4hxx.collapse_all(ko-kr,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(ko-kr,VS.110).gifOutput

22
23
hello

참고 항목

참조

interior_ptr(C++/CLI)