Constructeurs et templates
Bonjour,
J'ai une classe A qui possède deux constructeurs:
Code:
1 2
|
A(const int error, const std::string& message = "", const char* filename = __FILE__, const int line = __LINE__); |
et
Code:
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:
Code:
1 2
|
#define A(a) A(a, __FILE__, __LINE__) |
et
Code:
1 2
|
#define A(a,b) A(a,b,__FILE__,__LINE__) |
Mais ce n'est pas possible car c'est une redéfinition de ma macro A...
J'ai donc tenté une écriture à base de templates:
Code:
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__);
} |
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...
J'avoue que je sèche un petit peu...