Compartir a través de


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 aplican a todos los runtimes.)

Tiempo de ejecución de Windows

(No hay notas para esta característica de lenguaje que sólo se aplican al tiempo de ejecución de Windows).

y0fh545k.collapse_all(es-es,VS.110).gifRequisitos

Opción del compilador: /ZW

Common Language Runtime

El ejemplo de sintaxis siguiente muestra un puntero interior.

y0fh545k.collapse_all(es-es,VS.110).gifSintaxis

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

y0fh545k.collapse_all(es-es,VS.110).gifParámetros

  • más cv_qualifier
    const o calificadores de volatile .

  • tipo
    El tipo de inicializador.

  • var
    El nombre de la variable de interior_ptr .

  • inicializador
    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.

y0fh545k.collapse_all(es-es,VS.110).gifComentarios

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 de recolección de elementos no utilizados, vea pin_ptr.

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

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

y0fh545k.collapse_all(es-es,VS.110).gifRequisitos

Opción del compilador: /clr

y0fh545k.collapse_all(es-es,VS.110).gifEjemplos

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

Output

  
  
  

Vea también

Conceptos

Extensiones de componentes para plataformas de tiempo de ejecución