interior_ptr (C++/CLI)
Un pointeur intérieur déclare un pointeur vers un type référence, mais pas à l'objet lui-même.Un pointeur intérieur peut pointer vers un handle de référence, type valeur, le handle boxed de type, membre d'un type managé, ou un élément d'un tableau managé.
Tous les runtimes
(Il n'y a aucune note pour cette fonctionnalité de langage qui s'appliquent à tous les runtimes.)
Fenêtres d'exécution
(Il n'y a aucune note pour cette fonctionnalité de langage qui s'appliquent uniquement aux fenêtres d'exécution.)
Configuration requise
Option du compilateur : /ZW
Common Language Runtime
L'exemple de syntaxe illustre un pointeur intérieur.
Syntaxe
cli::interior_ptr<cv_qualifier type> var = &initializer;
Paramètres
cv_qualifier
const ou qualificateurs d' volatile .type
Le type d' initialiseur.var
Le nom de la variable d' interior_ptr .initialiseur
Un membre d'un type référence, d'élément d'un tableau managé, ou de tout autre objet que vous pouvez assigner un pointeur natif.
Remarques
Pointeur natif ne peut pas suivre un élément comme son emplacement modifications sur le tas managé, qui résulte des instances mobiles de garbage collector d'un objet.Pour qu'un pointeur à fait référence correctement à l'instance, le runtime doit mettre à jour le pointeur à l'objet nouvellement positionné.
interior_ptr représente un sur-ensemble de la fonctionnalité d'un pointeur natif.Par conséquent, ce qui peut être assigné à un pointeur natif peut également être assigné à interior_ptr.Un pointeur intérieur est autorisé à exécuter le même jeu d'opérations que les pointeurs natifs, y compris la comparaison et les opérations arithmétiques sur les pointeurs.
Un pointeur intérieur peut seulement être déclarée sur la pile.Un pointeur intérieur ne peut pas être déclaré comme membre d'une classe.
Étant donné que les pointeurs intérieurs existent uniquement sur la pile, en supposant que l'adresse cède d'un pointeur intérieur un pointeur non managé.
interior_ptr a une conversion implicite à bool, qui vous permet de son utilisation dans les instructions conditionnelles.
Pour plus d'informations sur la manière de déclarer un pointeur intérieur qui pointe vers un objet qui ne peut pas être déplacé sur le tas récupéré par le garbage collector, consultez pin_ptr.
interior_ptr est dans l'espace de noms CLI.Consultez Plateforme, valeurs par défaut et espaces de noms CLI (extensions du composant C++) pour plus d'informations.
Pour plus d'informations sur les pointeurs intérieurs, consultez
Comment : déclarer et utiliser des pointeurs intérieurs et des tableaux managés (C++/CLI)
Comment : déclarer des types de valeur avec le mot clé interior_ptr (C++/CLI)
Comment : surcharger des fonctions avec des pointeurs intérieurs et des pointeurs natifs (C++/CLI)
Comment : déclarer des pointeurs intérieurs avec le mot clé const (C++/CLI)
Configuration requise
Option du compilateur : /clr
Exemples
Exemple
l'exemple suivant montre comment déclarer et utiliser un pointeur intérieur dans un type 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