C'est plus facile de faire un ajout conditionnel plutôt qu'un ajout, ainsi qu'une suppression conditionnelle...
Donc en gros, cette fonctionnalité a été supprimée (auquel cas ce topic deviendrait inutile) ?
C'est plus facile de faire un ajout conditionnel plutôt qu'un ajout, ainsi qu'une suppression conditionnelle...
Donc en gros, cette fonctionnalité a été supprimée (auquel cas ce topic deviendrait inutile) ?
Salut,
Moi là je comprends que ça a été déplacé de la classe 'path' vers des fonctions libres...Path name checking functionality has been moved out of class path and into separate free-functions.
Donc ça doit toujours exister quelque part a priori.
MAT.
"Fonctions libres"... c'est vague, mais ce que moi, j'en ai compris, c'est que des fonctions externes à la classe s'occuperont de cette vérification (en d'autres mots, ça a été supprimé ^^), quitte à en fournir quelques-unes par défaut.
A la limite, je peux faire le concept du TypeChecker comme cela :
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if(TypeChecker::CheckType<MusicType>(filePath)) m_playlist.add(filePath);
Je suppose que pour pareille fonction, je devrais utiliser une fonction template que je spécialise pour chacun des types, mais vu que le corps de la fonction reste le même, autant la généraliser pour chacun des types... comment devrais-je le faire ? Dériver chacun des types d'une structure bidon Type, n'accepter dans le template que des structures dérivées, mais comment faire pour le tableau statique de strings ?
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 struct TypeChecker { struct MusicType { static boost::array<std::string, 3> Ext; }; template <> static bool CheckType(std::string const &name) { } template <MusicType> static bool CheckType(std::string const &name) { bool ret = false; for( boost::array<std::string, 3>::const_iterator it = MusicType::Ext.begin() ; it != MusicType::Ext.end() ; ++it ) { if(boost::filesystem::extension(name) == *it) { ret = true; break; } } return ret; } }; boost::array<std::string, 3> TypeChecker::MusicType::Ext = make_array<std::string>(".mp3", ".ogg", ".wav"); //?
Là, c'est une question de conception et de manipulation des templates (bon, c'est pas du metaprogramming non plus), mais je ne vais tout de même pas créer un nouveau topic pour ça...
Merci d'avance.
P.S : Est ce que ça existe un moyen de simuler une enum de strings (pour du metaprogramming) ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager