interior_ptr (C++/CLI)

Un puntero interior declara un puntero dentro de un tipo de referencia, pero no al propio objeto. Un puntero interior puede señalar a un identificador de referencia, tipo de valor, identificador ha de tipo, miembro de un tipo administrado, o a un elemento de una matriz administrada.

Todos los runtimes

(No hay notas para esta característica de lenguaje que se apliquen a todos los runtimes.)

Windows en tiempo de ejecución

(No hay notas para esta característica de lenguaje que solo se apliquen a Windows en tiempo de ejecución).

Requisitos

Opción del compilador: /ZW

Common Language Runtime

El ejemplo de sintaxis siguiente muestra un puntero interior.

Sintaxis

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

Parámetros

  • cv_qualifier
    const o calificadores de volatile .

  • type
    Tipo de initializer.

  • var
    El nombre de la variable de interior_ptr .

  • initializer
    Un miembro de un tipo de referencia, un elemento de una matriz administrada, o de cualquier otro objeto que puede asignar a un puntero nativo.

Comentarios

Puntero nativo no puede seguir un elemento como cambia su ubicación en el montón administrado, resultante de instancias móviles del recolector de elementos no utilizados de un objeto. Para que un puntero correctamente hace referencia a la instancia, el runtime necesita actualizar el puntero al objeto recién colocado.

interior_ptr representa un supraconjunto de la funcionalidad de un puntero nativo. Por consiguiente, cualquier elemento que se puede asignar a un puntero nativo se puede asignar a interior_ptr. Permiten a un puntero interior para realizar el mismo conjunto de operaciones que punteros nativos, incluidos comparación y la aritmética con punteros.

Un puntero interior sólo se puede declarar en la pila. Un puntero interior no se puede declarar como miembro de una clase.

Puesto que los punteros interiores sólo existen en la pila, tomando la dirección de un puntero interior produce un puntero no administrado.

interior_ptr tiene una conversión implícita a bool, que permite su uso en instrucciones condicionales.

Para obtener información sobre cómo declarar un puntero interior que apunte a un objeto que no se puede mover en la pila basura- obtenida, vea pin_ptr.

interior_ptr está en el espacio de nombres cli. Para obtener más información, vea Espacios de nombres de plataforma, predeterminado y CLI (Extensiones de componentes de C++).

Para obtener más información sobre punteros interiores, vea

Requisitos

Opción del compilador: /clr

Ejemplos

Ejemplo

El ejemplo siguiente se muestra cómo declarar y utilizar un puntero interior de un tipo de referencia.

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

Resultados

123

Vea también

Conceptos

Extensiones de componentes para plataformas de tiempo de ejecución