Partager via


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.)

y0fh545k.collapse_all(fr-fr,VS.110).gifConfiguration requise

Option du compilateur : /ZW

Common Language Runtime

L'exemple de syntaxe illustre un pointeur intérieur.

y0fh545k.collapse_all(fr-fr,VS.110).gifSyntaxe

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

y0fh545k.collapse_all(fr-fr,VS.110).gifParamè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.

y0fh545k.collapse_all(fr-fr,VS.110).gifRemarques

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

y0fh545k.collapse_all(fr-fr,VS.110).gifConfiguration requise

Option du compilateur : /clr

y0fh545k.collapse_all(fr-fr,VS.110).gifExemples

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

  
  
  

Voir aussi

Concepts

Extensions de composant pour les plateformes Runtime