Bonjour,
J'ai une classe A qui possède deux constructeurs:
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 A(const int error, const std::string& message = "", const char* filename = __FILE__, const int line = __LINE__);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 A(const std::string& message, const char* filename = __FILE__, const int line = __LINE__);
Pour me simplifier l'écriture, j'aurais aimé écrire un truc du genre:
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2#define A(a) A(a, __FILE__, __LINE__)
Mais ce n'est pas possible car c'est une redéfinition de ma macro A...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2#define A(a,b) A(a,b,__FILE__,__LINE__)
J'ai donc tenté une écriture à base de templates:
Mais l'ennui c'est que les __FILE__ et __LINE__ correspondent aux lignes de déclaration de mes templates et non aux lignes d'appel à ctor<A>(0, "toto") ou ctor<A>("titi") dans le code...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 template <typename T, typename A, typename B> T ctor(A a, B b){ return T(a, b, __FILE__, __LINE__); } template <typename T, typename A> T ctor(A a){ return T(a, __FILE__, __LINE__); }
J'avoue que je sèche un petit peu...
Partager