방법: interior_ptr 키워드를 사용하여 값 형식 선언(C++/CLI)
interior_ptr값 형식으로 사용할 수 있습니다.
중요 |
---|
이 언어기능은 지원 하지는 /clr컴파일러옵션을 있지만으로 /ZW컴파일러옵션. |
예제
설명
다음 C++/CLI 를 사용 하는 방법을 보여 주는 예제는 interior_ptr값 형식을 사용 합니다.
코드
// 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);
}
Output
1
2
2
3
3
3
예제
설명
값 형식에 this포인터를 interior_ptr를 평가 합니다.
본문에 있는 비-고정적인멤버-함수는값 형식V, this 형식의 식입니다 interior_ptr<V> 값을 가진개체에 대 한함수호출의 주소입니다.
코드
// 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
}
};
예제
설명
다음 샘플에고정적인멤버와연산자의 주소를 사용 하는 방법을 보여 줍니다.
고정적인주소를원시포인터를 얻을 수 있습니다. 값 형식멤버런타임힙할당 되 고가비지 수집기에서 이동할 수 있기 때문에값 형식고정적인멤버의 주소는관리포인터입니다.
코드
// 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);
}
Output
22
23
hello