Поделиться через


interior_ptr (C++/CLI)

Указатель на внутренний указатель объявляется внутри ссылочному типу, а не к объекту.Внутренний указатель может указывать на маркер ссылки, тип значения, положенному упакован в маркер управляемого типа, члену типа или элемента управляемого массива.

AfxWndProc

(Нет примечания для данной функции языка, которые применяются ко всем средам выполнения).

Колесо

(Нет примечания для данной функции языка, которые применяются только к окнам среды выполнения).

y0fh545k.collapse_all(ru-ru,VS.110).gifТребования

Параметр компилятора: /ZW

Среда CLR

В следующем примере показан синтаксис является внутренним указателем.

y0fh545k.collapse_all(ru-ru,VS.110).gifСинтаксис

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

y0fh545k.collapse_all(ru-ru,VS.110).gifПараметры

  • cv_qualifier
    const или квалификаторы volatile.

  • тип
    Тип инициализатор.

  • var
    Имя переменной interior_ptr.

  • инициализатор
    Элемент ссылочного типа элемента управляемого массива или любого другого объекта, который можно присвоить собственный указатель.

y0fh545k.collapse_all(ru-ru,VS.110).gifЗаметки

Собственный указатель не может отследить элемент по мере его расположение изменяет в управляемой куче, которая является результатом сборщика мусора при перемещении экземпляров объекта.Для этого указателя правильно, который необходимо обратиться к экземпляру, среды выполнения необходимо обновить указатель на вновь, расположенному объекту.

interior_ptr представляет надмножество функциональных возможностей собственного указателя.Таким образом, любые конструкции, которое может быть присвоено собственный указатель можно также присвоить interior_ptr.Внутренний указатель разрешено выполнять один и тот же набор операций, как собственные указатели, включая сравнения и арифметические операции указателя.

Внутренний указатель может быть объявлены в стеке.Внутренний указатель не могут быть объявлены как члена класса.

Поскольку внутренние указатели существуют только в стеке, получающие адрес указателя нутряного создает неуправляемый указатель.

interior_ptr имеет неявное преобразование к bool, разрешающее для использования в условных операторов.

Сведения об объявлении внутренний указатель, который указывает на объект, не может быть перемещена на мусор-собранной куче см. в разделе pin_ptr.

interior_ptr в пространстве имен инфраструктуры cli.Дополнительные сведения см. в разделе Пространства имен platform, default и cli (расширения компонентов C++).

Дополнительные сведения о нутряных указателей см.

y0fh545k.collapse_all(ru-ru,VS.110).gifТребования

Параметр компилятора: /clr

y0fh545k.collapse_all(ru-ru,VS.110).gifПримеры

Пример

В следующем образце показано, как объявить и использовать внутренний указатель на ссылочный тип.

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

  
  
  

См. также

Основные понятия

Расширения компонентов для платформ среды выполнения