Bonjour,
dans le cadre d'un petit outil pour le binding Js <=> C++, je voudrais �crire une fonction template pour convertir diff�rents types natif depuis et vers JS.
J'ai donc un template par d�faut d�fini comme suit (1):
Je sp�cialise ensuite ce template pour diff�rents types de base (int, string, ...). Les param�tres d'entr�es restent identique (JsObj) ; seul celui de retou diff�re. Par exemple (2):
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 template<typename TYPE> TYPE JsToNative(JsObj object) { throw new Exception("unhandled JsToNative conversion."); }
Mon probl�me est que je voudrais maintenant d�finir une sp�cialisation 'g�n�rique' qui s'applique pour tout TYPE qui soit un pointeur vers une instance de classe. Quelque chose comme (3):
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8 template<> std::string JsToNative(JsObj object) { if (object.isJsString()) return std::string(object.toString()); else throw new Exception("bad JsToNative conversion: JS object is not a string."); }
Probl�me: cette derni�re impl�mentation (et les autres variantes test�es) ne fonctionnent pas quand j'essaie de lui passer un pointeur ( JsToNative<MonType*>(myJsObj) ) : soit le compilo essaie d'utiliser (1) � la place de (3), soit j'ai un "call of overloaded template function is ambiguous".
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10 template<> TYPE* JsToNative(JsObj object) { if (object->isJsObject()) { TYPE* ptr = dynamic_cast<TYPE*>( object->getBoundDataPointer() ); if (ptr) return ptr; } throw new Exception("bad JsToNative conversion: JS object is not bound to a native instance."); }
Une id�e ?
Merci d'avance![]()
Partager