Salut,
Je possède deux sorte d'objets à sérialzizer :
-Les types primitifs (int, double, etc...)
-Les objets.
Les types primitif sont inséré tel quel dans les objets ostream et istream.
Les objets sont sérializé à l'aide d'une méthode que je défini dans la classe même et elle prend en argument une archive contenant le stream qui se charge de compresser/décompresser les données.
Pour sérializer un type primitif j'ai redéfini l'opérateur & dans les classes Archive.
Le problème est que j'ai besoin de une redéfinition pour les types primitifs et une autre pour les objets :
Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 template <typename T> void operator& (Serialize<T>& object) { objet.serialize(*this); } template <typename T> void operator& (T& data) { buffer<<data; }
Si c'est un type primitif je dois le mettre dans le stream, sinon je dois ré-appeler la méthode sérialize sur l'objet.
Le problème est que il me met toujours l'erreur que l'opérateur << n'existe pas pour l'objet, c'est normal après tout, je l'ai pas défini car je peux pas le sérialiser directement dans l'archive.
Alors ce que je voudrais c'est redéfinir la méthode de manière à ce que je n'ai plus cette erreur en compilation mais je ne vois pas très bien m'y prendre.
J'ai entendu parlé de sf finae mais je n'ai pas trouvé grand chose là dessus.
Merci d'avance pour vos réponses.
Partager