Partilhar via


interior_ptr (C++/CLI)

Um ponteiro interior declara um ponteiro dentro de um tipo de referência, mas não no próprio objeto. Um ponteiro interior pode apontar para um identificador de referência, tipo de valor, encaixotada identificador do tipo, membro de um tipo gerenciado, ou um elemento de uma matriz gerenciado.

Todos os Tempos de Execução

(Não há nenhum comentário sobre este recurso de linguagem que se aplica a todos os tempos de execução).

Tempo de execução do windows

(Não há nenhum comentário sobre este recurso de linguagem que se aplica somente Tempo de Execução do Windows).

Requisitos

Opção do compilador: /ZW

Common Language Runtime

A sintaxe a seguir demonstra um ponteiro interior.

Sintaxe

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

Parâmetros

  • cv_qualifier
    const ou qualificadores de volatile .

  • type
    O tipo de initializer.

  • var
    O nome da variável de interior_ptr .

  • initializer
    Um membro de um tipo de referência, do elemento de uma matriz gerenciado, ou qualquer outro objeto que você pode atribuir a um ponteiro nativo.

Comentários

Um ponteiro nativo não pode rastrear um item como seu local for alterado no heap gerenciado, que é o resultado das instâncias movendo do coletor de lixo de um objeto. Para que um ponteiro consulte corretamente a instância, o tempo de execução precisa atualizar o ponteiro para o objeto recentemente posicionado.

interior_ptr representa um superconjunto da funcionalidade de um ponteiro nativo. Em virtude disso, qualquer coisa que pode ser atribuído a um ponteiro nativo também pode ser atribuído a interior_ptr. Um ponteiro interior tem permissão para executar o mesmo conjunto de operações que ponteiros nativos, incluindo a comparação e aritmética do 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 os ponteiros interiores só existem na pilha, fazer o endereço de um ponteiro interior gerencie um ponteiro não gerenciado.

interior_ptr tem uma conversão implícita em 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 para o heap com coletado, consulte pin_ptr.

interior_ptr está 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 os ponteiros interiores, consulte

Requisitos

Opção do compilador: /clr

Exemplos

Exemplo

O exemplo a seguir mostra como declarar e usar um ponteiro dentro de 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

123

Consulte também

Conceitos

Extensões de componente para plataformas de tempo de execução