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).
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
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.
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 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
Cómo: Declarar y usar punteros internos y matrices administradas (C++/CLI)
Cómo: Declarar tipos de valor con la palabra clave interior_ptr (C++/CLI)
Cómo: Sobrecargar funciones con punteros internos y punteros nativos (C++/CLI)
Cómo: Declarar punteros internos con la palabra clave const (C++/CLI)
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);
}
Output
Vea también
Conceptos
Extensiones de componentes para plataformas de tiempo de ejecución