Condividi tramite


interior_ptr (C++/CLI)

Un puntatore interno dichiara un puntatore interno di un tipo di riferimento, ma non all'oggetto stesso.Un puntatore interno possibile indicare all'handle di riferimento, il tipo di valore, l'handle del tipo boxed, membro di un tipo gestito, o un elemento di una matrice gestita.

Tutti i runtime

(Non esistono commenti della funzionalità del linguaggio che si applicano a tutti i runtime.)

Finestre runtime

(Non esistono commenti della funzionalità del linguaggio che si applicano solo alle finestre runtime).

y0fh545k.collapse_all(it-it,VS.110).gifRequisiti

Opzione del compilatore: /ZW

Common Language Runtime

Nell'esempio di sintassi viene illustrato un puntatore interno.

y0fh545k.collapse_all(it-it,VS.110).gifSintassi

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

y0fh545k.collapse_all(it-it,VS.110).gifParametri

  • più cv_qualifier
    const o qualificatori di volatile .

  • tipo
    Il tipo di inizializzatore.

  • var
    Il nome della variabile di interior_ptr .

  • inizializzatore
    Un membro di un tipo di riferimento, dell'elemento della matrice gestita, o qualsiasi altro oggetto che è possibile assegnare a un puntatore nativo.

y0fh545k.collapse_all(it-it,VS.110).gifNote

Un puntatore nativo non può tenere traccia di un elemento come le modifiche di posizione nell'heap gestito, che deriva dalle istanze lo spostamento del Garbage Collector di un oggetto.Affinché un puntatore correttamente per fare riferimento all'istanza, il runtime deve aggiornare il puntatore all'oggetto appena inserito.

interior_ptr rappresenta un superset della funzionalità di un puntatore nativo.Di conseguenza, qualsiasi elemento che possa essere assegnato a un puntatore nativo può essere assegnato a interior_ptr.Un puntatore interno è consentito eseguire lo stesso set di operazioni dei puntatori nativi, incluso il confronto e l'aritmetica dei puntatori.

Un puntatore interno può essere dichiarata solo sullo stack.Un puntatore interno non può essere dichiarato come membro di una classe.

Poiché i puntatori interni sono disponibili solo nello stack, accettare l'indirizzo di un puntatore interno di un puntatore non gestito.

interior_ptr a una conversione implicita a bool, che consente del relativo utilizzo nelle istruzioni condizionali.

Per informazioni su come dichiarare un puntatore interno che punta in un oggetto che non può essere spostato sull'heap sottoposto a garbage collection, vedere pin_ptr.

interior_ptr si trova nello spazio dei nomi CLI.Per ulteriori informazioni, vedere Spazi dei nomi Platform, default e cli (Estensioni del componente C++).

Per ulteriori informazioni sui puntatori interni, vedere

y0fh545k.collapse_all(it-it,VS.110).gifRequisiti

Opzione del compilatore: /clr

y0fh545k.collapse_all(it-it,VS.110).gifEsempi

Esempio

Di seguito viene illustrato come dichiarare e utilizzare un puntatore interno di un tipo di riferimento.

// 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

  
  
  

Vedere anche

Concetti

Estensioni componenti per le piattaforme runtime