Bonjour à tous j'ai une erreur de compilation des plus étonnantes. J'ai une classe NGKeyEvent. Une fonction membre statique templaté me permettant de créer un objet de cette classe :
1 2
| template <NGType>
static NGKeyEvent* Create(const NGResFramePtr& frame = NGResFramePtr()); |
Voila la définition :
1 2 3 4 5
| template <>
inline NGKeyEvent* NGKeyEvent::Create<NGKeyEvent::KEY_PRESSED>(const NGResFramePtr& frame)
{
return NGMemoryManagerObject<NGKeyEvent>::GetPool().construct(NGKeyEvent::KEY_PRESSED, frame);
} |
Jusque là rien de bien sorcier.
Après au niveau de l'appel :
1 2 3 4 5
| case sf::Event::KeyPressed:
{
event = NGKeyEvent::Create<NGEvent::KEY_PRESSED>();
break;
} |
Pas de problème ça compile (bon j'ai simplifié ma fonction normalement je lui donne des infos mais sur l'event mais ça ne change strictement rien. Par contre si je fais ça :
1 2 3 4 5 6 7 8 9 10
| case sf::Event::KeyPressed:
{
event = NGKeyEvent::Create<NGEvent::KEY_PRESSED>();
break;
}
case sf::Event::KeyReleased:
{
event = NGKeyEvent::Create<NGEvent::KEY_RELEASED>();
break;
} |
ça compile pas et le compilateur me met l'erreur : Error 1 error C2440: 'default argument' : cannot convert from 'const NGResFramePtr *' to 'const NGResFramePtr &' . Un autre exemple, celui la marche :
event = NGKeyEvent::Create<NGEvent::KEY_PRESSED>();
Celui la ne marche pas :
1 2
| event = NGKeyEvent::Create<NGEvent::KEY_PRESSED>();
event = NGKeyEvent::Create<NGEvent::KEY_PRESSED>(); |
L'erreur de compilation ne survient que quand il y a deux appels à cette fonctions, c'est quand même étonnant. J'ai une deuxième classe (pour gérer les boutons de la souris) qui est implémenté de la même façon et si je fais deux appels il me met une autre erreur encore plus déconcertante :
Error 1 fatal error C1001: An internal error has occurred in the compiler.
Partager