Je voudrais avoir une méthode personnalisée – j’appellerai MyMethod – dans une classe basée sur des modèles – J’appellerai Foo – SEULEMENT lorsque Foo a été instancié avec certains types de parameters de modèle (par exemple, lorsque A est entier et B est une chaîne), sinon, Je ne veux pas que MyMethod existe du tout […]
Cette réponse montre donc comment utiliser une fonction dans le type de retour pour forcer l’ échec de la substitution n’est pas une erreur (SFINAE) . Existe-t-il un moyen de l’utiliser et d’ avoir un type de retour différent de celui de la fonction? Donc, une ligne d’arguments à overload déclenchera le SFINAE: overload { […]
J’essaie de spécialiser une seule méthode d’un modèle de classe . La réponse acceptée ici fonctionne vraiment, mais que signifie ce code pour le compilateur et pourquoi ne fonctionne-t-il pas comme prévu? #include template struct Node { void split() { puts( “Default method” ) ; } // this comstacks, but it doesn’t appear to do […]
Je commence à apprendre le modèle C ++. Maintenant, j’essaie de comstackr l’exemple simple du modèle C ++. #include template class pair1 { T value1, value2; public: pair1 (T first, T second) { value1=first; value2=second; } T getmax (); }; template T pair1::getmax (){ T retval; retval = value1>value2? value1 : value2; return retval; } […]
J’ai une classe de base qui utilise un modèle et quelques méthodes qui ne dépendent pas du type de modèle, mais lorsque j’utilise le pointeur Base* a au lieu de la classe dérivée, le compilateur se plaint car aucun type n’est spécifié. Je sais que c’est possible en Java, mais je ne sais pas si […]
Supposons que vous deviez écrire une bibliothèque de modèles qui fonctionne sur un type fourni par le client. En outre, supposons que cette bibliothèque ait réellement besoin d’accéder à une variable globale paramétrée par le type fourni par le client. Comment allez-vous mettre en œuvre ce modèle?
J’essaie de déclarer une classe de modèle A pour utilisation dans une classe de Visitor . Il suffirait à mes fins de déclarer l’instance int A de la classe A J’ai essayé deux approches mais les deux donnent des erreurs différentes et je ne sais pas comment procéder. Voici un MWE de mon erreur: namespace […]
J’essaie de combiner boost :: numeric :: odeint avec une implémentation de la classe System qui me correspond (voir System.hpp). Un object système (modèle) est utilisé dans une méthode de classe BatchFilter, comme suit: # BatchFilter.cpp # template BatchFilter class {…} System dynamics(this -> args, N_true, this -> true_dynamics_fun ); typedef boost::numeric::odeint::runge_kutta_cash_karp54 error_stepper_type; auto stepper […]
Dupliquer possible: Types “hérités” utilisant CRTP et typedef template struct A { typename T::Sub s; }; struct B : A { struct Sub {}; }; Clang rapporte cette erreur: todo.cc:3:15: error: no type named ‘Sub’ in ‘B’ typename T::Sub s; ~~~~~~~~~~~~^~~ todo.cc:6:12: note: in instantiation of template class ‘A’ requested here struct B : A […]
Je souhaite utiliser la conception basée sur des stratégies pour modifier le type de retour d’une classe hôte en fonction des stratégies que j’utilise. Voici un exemple: class IntPolicy { public: int doIntPolicy(double anInput) { return static_cast(anInput); } }; class DoublePolicy { public: double doDoublePolicy(int anInput) { return static_cast(anInput); } }; template class SimpleHost { […]