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).
Requisiti
Opzione del compilatore: /ZW
Common Language Runtime
Nell'esempio di sintassi viene illustrato un puntatore interno.
Sintassi
cli::interior_ptr<cv_qualifier type> var = &initializer;
Parametri
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.
Note
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
Procedura: dichiarare e utilizzare i puntatori interni e le matrici gestite (C++/CLI)
Procedura: dichiarare i tipi di valori con la parola chiave interior_ptr (C++/CLI)
Procedura: eseguire l'overload di funzioni con puntatori interni e puntatori nativi (C++/CLI)
Procedura: dichiarare i puntatori interni con la parola chiave const (C++/CLI)
Requisiti
Opzione del compilatore: /clr
Esempi
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