J’essaie d’implémenter un simple arbre de syntaxe abstraite (AST) en C ++ en utilisant le modèle de visiteur. Généralement, un modèle de visiteur ne gère pas la valeur de retour. Mais dans mon AST, il existe des nœuds d’expressions qui se soucient du type de retour et de la valeur de son nœud fils. Par […]
J’écris une bibliothèque pour manipuler les graphes de liaison et j’utilise la Boost Graph Library pour stocker les données pour moi. Malheureusement, je n’arrive pas à comprendre comment mettre en œuvre un modèle de visiteur approprié, car vous ne pouvez pas sous-classer les vertices. Vous devez plutôt vous fier aux propriétés. La structure de visiteurs […]
J’essaie d’implémenter le modèle de visiteur pour une structure d’object comportant des méthodes avec différents types de retour (chaîne, int signé, int non signé, etc.) Maintenant, dans la hiérarchie des objects, j’ai ajouté une méthode Accept avec la signature suivante (en utilisant C ++): void Accept(Visitor *); Je ne parviens pas à comprendre comment utiliser […]
Ma question est un suivi de Comment rendre ce code plus rapide (apprendre les meilleures pratiques)? , qui a été mis en attente (bummer). Le problème consiste à optimiser une boucle sur un tableau avec des flotteurs testés pour déterminer s’ils se trouvent dans un intervalle donné. Les indices des éléments correspondants dans le tableau […]
Imaginons que j’ai une collection de noeuds que j’utilise plus tard pour ma classe Renderer. Ensuite, j’ai une classe de visiteur qui peut visiter un noeud ou une collection entière. C’est simple parce que ma collection de nœuds est simplement un wrapper pour std :: list avec quelques méthodes supplémentaires. Le problème est que j’aimerais […]
Dans une implémentation typique du modèle de visiteur , la classe doit prendre en compte toutes les variations (descendants) de la classe de base. Il existe de nombreux cas où le même contenu de méthode chez le visiteur est appliqué aux différentes méthodes. Une méthode virtuelle basée sur un modèle serait idéale dans ce cas, […]
Ok avant de marquer ceci comme un duplicata, laissez-moi me préciser. Je lis sur le modèle de visiteur et ses utilisations applicables. Je suis tombé sur ce post: Quand devrais-je utiliser le modèle de conception de visiteur? et l’utilisateur qui a écrit la première réponse dit ce qui suit: Nous souhaitons maintenant append une nouvelle […]
Le code suivant: #include #include #include struct A { A() { } ~A() throw() { } A& operator=(A const & rhs) { return *this; } bool operator==(A const & rhs) { return true; } bool operator<(A const & rhs) { return false; } }; std::ostream & operator<<(std::ostream & os, A const & rhs) { os […]
J’ai un problème avec la duplication de code identique pour les versions const et non const . Je peux illustrer le problème avec du code. Voici deux exemples de visiteurs, l’un modifie les objects visités et l’autre non. struct VisitorRead { template void operator()(T &t) { std::cin >> t; } }; struct VisitorWrite { template […]
La classe QVariant de Qt a-t-elle une implémentation de modèle de visiteur existante (et pratique)? Sinon, est-il possible d’obtenir quelque chose de similaire à boost::apply_visitor() , c’est-à-dire de minimiser la duplication en ce qui concerne le test du type et du transtypage? Je veux réaliser quelque chose dans le sens suivant: /* I have a […]