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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
template <NGType>
static NGKeyEvent* Create(const NGResFramePtr& frame = NGResFramePtr());
Voila la définition :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
event = NGKeyEvent::Create<NGEvent::KEY_PRESSED>();
Celui la ne marche pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Error	1	fatal error C1001: An internal error has occurred in the compiler.