"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment implémenter le mot-clé "auto" automatique en C ++?

Comment implémenter le mot-clé "auto" automatique en C ++?

Publié le 2025-04-13
Parcourir:854

How Can We Implement an Autonomous

self en c: l'implémentation autonome

Le mot-clé, largement utilisé dans des langues comme Php, pose une défi en C en raison de l'absence d'un mécanisme équivalent. Bien qu'une implémentation spécifique à la classe utilisant des types de types imbriqués soit simple, elle nécessite la duplication et les risques introduisant des bogues subtils. Cet article explore une solution élégante à l'aide de Decltype et des modèles pour réaliser une autonomisation autonome.

Déclarer de soi avec DeclType

La tentative initiale d'introduire un auto à l'aide de DeclType échoue car elle tente d'accès à celle-ci en dehors d'une instance. Pour résoudre ce problème, nous devons résumer la déclaration d'auto dans un modèle:

template 
class SelfBase: public Ts...
{
protected:
    typedef X self;
};

Ce modèle sert de classe de base pour les types qui peuvent accéder à soi. X

with_self_derived (x, ...): ajoute auto-base comme classes de base à x

Exemples

  • en utilisant ces macros, nous pouvons maintenant définir des classes avec self:
  • { VOID TEST () { Self foo; // self est maintenant disponible } }; // héritage multiple classe avec_sel_derived (bar, foo, foo2) { / * ... * / };

Conclusion

En tirant parti de Decltype et des modèles, il est possible d'implémenter un type de membre autonome autonome en c. Cette approche permet l'utilisation de soi dans les classes sans risque de bugs silencieux en raison de la redéfinition des classes défectueuses. Les macros de commodité fournies rendent l'implémentation simple et flexible, permettant un héritage de classe de base multiple et différentes combinaisons de classes de base auto et régulières.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3