J’ai une classe C ++ basée sur le type entier, par exemple, template Dites que quelque part dans cette classe, j’aimerais utiliser sscanf pour lire certaines valeurs d’un fichier, par exemple: int_type num_rows; fgets( buffer, BUFSIZE, in_file ); sscanf( buffer, “%d”, &num_rows); Le spécificateur de format ne fonctionne correctement que si int_type est le type […]
J’utilise FLTK pour effectuer mes tâches liées à l’interface graphique et des fonctions de type void (*fn)( Fl_Widget*, void* ) doivent être enregistrées en tant que rappels de widget. J’en ai assez de créer manuellement des redirecteurs de fonctions qui décompactent les void* s et appellent les fonctions statiques appropriées de mes classes pour effectuer […]
J’ai écrit le code suivant: template void myname(T* x) { cout<<"x is "<<x; } et j’ai appelé: char *p=”stackOverflow”; myname(p); Il imprime stackOverflow . Mais si je change l’argument de template de (T* x) en (T x) j’obtiens le même résultat. Alors, quelle est la différence entre les deux parameters de modèle? void myname (T […]
Avis: suivi de cette question Après avoir posé cette question sur le repliement du paquet de parameters en paires , j’ai remarqué que je devais conserver le type complet du type précédemment plié comme type de paire gauche. Par exemple: Fold f; doit évaluer à std::tuple< std::pair, std::pair<std::pair /* , std::pair<std::pair<std::pair, long> /* the previous […]
Dans l’exemple suivant, j’ai une classe d’object qui définit une classe de référence. Les deux acceptent la mutabilité comme argument de modèle. Dans le cas où ‘obj’ est ‘Const’, je souhaite interdire une référence de type ‘Non_Const’. L’exemple produit le message ambigu «Une erreur interne s’est produite dans le compilateur» dans Visual C ++ 2012. […]
J’essaie de comstackr Flusspferd sous Windows à l’aide de MSVC, mais il échoue en raison d’un problème d’instanciation de modèle. Pour la facilité d’explication, j’ai récrit le problème en termes plus simples: #include #include class UndefinedType; class A { }; class TestClass { public: TestClass(A* a) { } template TestClass(OtherType t, typename boost::disable_if<typename boost::is_convertible::type>::type * […]
J’ai essayé de faire ce truc simple et Visual Studio 2008 ne semble pas l’aimer. template class SomeClass { public: template static bool SomeOperator(const typename T1::const_iterator& p_Begin1, const typename T1::const_iterator& p_End1, const typename T2::const_iterator& p_Begin2, const typename T2::const_iterator& p_End2) { // do some stuff.. } }; Et appelez ça avec quelque chose comme ça: std::wssortingng […]
Disons que j’ai ce cours: dans Vector4.h : #pragma once template class Vector4 { public: TX; TY; TZ; TW; Vector4(); Vector4(TX, TY, TZ, TW); ~Vector4(); friend Vector4 operator*(const Vector4& l, const Vector4& r); }; #include “Vector4.inl” et dans Vector4.inl : template Vector4::Vector4() { X = 0; Y = 0; Z = 0; W = 0; […]
Selon la page de msvs2015rc, l’inheritance du constructeur doit être pris en charge. Oui, cela fonctionne dans des cas simples comme celui-ci: struct B { B(int) {} }; struct D : B { using B::B; // now we can create D object with B’s constructor }; Mais si je vais essayer de créer un exemple […]
J’essaie de passer un template typedef comme argument à un template de fonction. Cependant, j’obtiens les erreurs suivantes: TestTemplates.cpp: 11: erreur: id-identificateur non qualifié attendu avant le jeton ‘&’ TestTemplates.cpp: 11: erreur: id-identificateur non qualifié attendu avant le jeton ‘&’ TestTemplates.cpp: 11: erreur: initialiseur attendu avant le jeton ‘&’ TestTemplates.cpp: 25: erreur: ‘func’ n’a pas […]