interior_ptr
Un pointeur intérieur déclare un pointeur à l'intérieur d'un type de référence, mais pas à l'objet lui-même. Un pointeur intérieur peut pointer vers un handle de référence, un type de valeur, un handle enfermé dans une boîte de type, un membre d'un type managé, ou un élément d'un tableau managé.
Tous les runtimes
(Aucune note de cette fonctionnalité de langage ne s'applique à tous les runtimes.)
Windows Runtime
(Aucune note de cette fonctionnalité de langage ne s'applique qu'au Windows Runtime.)
Conditions requises
Option du compilateur : /ZW
Common Language Runtime
L'exemple de syntaxe montre un pointeur intérieur.
Syntaxe
cli::interior_ptr<cv_qualifier type> var = &initializer;
Paramètres
cv_qualifier
const ou identificateurs volatile.type
Type de initializer.var
Nom de la variable interior_ptr.initializer
Un membre d'un type de référence, un élément d'un tableau managé, ou tout autre objet que vous pouvez attribuer à un pointeur natif.
Remarques
Un pointeur natif ne peut pas suivre un élément lorsque son emplacement change sur le segment managé, ce qui résulte en des instances de déplacement de garbage collector d'un objet. Pour qu'un pointeur fasse référence correctement à l'instance, l'exécution doit mettre à jour le pointeur à l'objet récemment positionné.
Un interior_ptr représente un surensemble des fonctionnalités d'un pointeur natif. Par conséquent, un problème susceptible d'être affecté à un pointeur natif peut également être affecté à interior_ptr. Un pointeur intérieur est autorisé à exécuter le même ensemble d'opérations que les pointeurs natifs, notamment la comparaison et retourner les opérations arithmétiques sur les pointeurs.
Un pointeur intérieur peut être déclaré dans la pile. Un pointeur intérieur ne peut pas être déclaré en tant que membre d'une classe.
Puisque les pointeurs intérieurs existent uniquement dans la pile, prendre l'adresse d'un pointeur intérieur donne cell d'un pointeur non-managé.
interior_ptr une conversion implicite à bool, qui permet son utilisation dans les instructions conditionnelles.
Pour plus d'informations sur la façon de déclarer un pointeur intérieur qui pointe vers un objet qui ne peut pas être déplacé sur le segment récupérés par le garbage collector, consultez pin_ptr.
interior_ptr est dans l'espace de noms cli. Pour plus d'informations, consultez l'espace de noms de CLI.
Pour plus d'informations sur les pointeurs intérieurs, consultez .
Comment : Déclaration et l'utilisation des pointeurs intérieurs et les tableaux managés
Comment : déclarez les types valeur avec le mot clé d'interior_ptr
Comment : La surcharge avec des pointeurs intérieurs et les pointeurs natifs
Comment : déclarez les pointeurs intérieurs avec le mot clé const
Conditions requises
Option du compilateur : /clr
Exemples
Exemple
L'exemple suivant indique comment déclarer et utiliser un pointeur dans dans un type de référence.
// 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);
}
Sortie
123