Bonjour,

J'ai un code du type :

Code : 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
 
namespace toto {
 
template <class type> class testclasstemplate {
...
};
 
class testsimpleclass {
....
};
 
} //namespace toto
 
template <class type> class Factory {
...
};
Dans un cpp, j'instantie une Factory en lui passant un testclasstemplate<testsimpleclass> de la manière suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
using namespace toto;
...
 
Factory<testclasstemplate<testsimpleclass> > my_factory;
Ce code échoue à la compilation, j'obtiens l'erreur :
" error C2512: 'testclasstemplate<T>' : no appropriate default constructor available
with
[
T=toto::testsimpleclass
]"

Je suis obligé de spécifier le nom du namespace devant testclasstemplate pour pouvoir compiler, et ce malgré la directive using :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
using namespace toto;
...
 
Factory<toto::testclasstemplate<testsimpleclass> > my_factory;
Chose que j'aimerais éviter. Y'a-t-il un moyen de faire compiler le premier code ? Je en comprends pas trop d'où vient le problème :/