interior_ptr (C++/CLI)
Um ponteiro interior declara um ponteiro para dentro de um tipo de referência, mas não o próprio objeto.Um ponteiro interior pode apontar para um identificador de referência, o tipo de valor, o identificador de tipo, membro de um tipo gerenciado ou para um elemento de uma matriz gerenciada.
Todos os tempos de execução
(Não há nenhum comentários para esse recurso de linguagem que se aplicam a todos os tempos de execução.)
Tempo de execução do Windows
(Não há nenhum comentários para esse recurso de linguagem que se aplicam somente ao runtime do Windows.)
Requisitos
Opção de compilador:/ZW
Common Language Runtime
O exemplo de sintaxe a seguir demonstra um ponteiro interior.
Sintaxe
cli::interior_ptr<cv_qualifier type> var = &initializer;
Parâmetros
cv_qualifier
Const ou volatile qualificadores.tipo
O tipo de inicializador.var
O nome do interior_ptr variável.inicializador
Um membro de um tipo de referência, um elemento de uma matriz gerenciada ou qualquer outro objeto que você pode atribuir um ponteiro nativo.
Comentários
Um ponteiro nativo não é capaz de controlar um item como as alterações de suas localização no heap gerenciado, o que resulta do coletor de lixo mover instâncias de um objeto.Para um ponteiro para se referir à instância de corretamente, o tempo de execução precisa atualizar o ponteiro para o objeto posicionado recentemente.
Um interior_ptr representa um superconjunto da funcionalidade de um ponteiro nativo.Portanto, tudo o que pode ser atribuído a um ponteiro nativo também pode ser atribuído a uma interior_ptr.Um ponteiro interior é permitido para executar o mesmo conjunto de operações como ponteiros nativos, incluindo comparação e aritmética de ponteiro.
Um ponteiro interior só pode ser declarado na pilha.Um ponteiro interior não pode ser declarado como um membro de uma classe.
Como ponteiros interiores somente na pilha, pegar o endereço de um ponteiro interior produz um ponteiro não gerenciado.
interior_ptrtem uma conversão implícita para bool, que permite seu uso em instruções condicionais.
Para obter informações sobre como declarar um ponteiro interior que aponta para um objeto que não pode ser movido no heap de coleta de lixo, consulte pin_ptr.
interior_ptrestá no namespace cli.Consulte Namespaces Plataforma, padrão e cli (Extensões de Componentes C++) para maiores informações.
Para obter mais informações sobre ponteiros interiores, consulte
Como declarar e usar ponteiros internos e matrizes gerenciadas (C++/CLI)
Como declarar tipos de valores com a palavra-chave interior_ptr (C++/CLI)
Como sobrecarregar funções com ponteiros internos e nativos (C++/CLI)
Como declarar ponteiros internos com a palavra-chave const (C++/CLI)
Requisitos
Opção de compilador:/clr
Exemplos
Exemplo
O exemplo a seguir mostra como declarar e usar um ponteiro interior em um tipo de referência.
// 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);
}
Saída
Consulte também
Conceitos
Extensões de componente para plataformas de tempo de execução