Hello,
Je fais actuellement un travail de sérialisation..
Soit la classe suivante :
J'ai par ailleurs défini dans un autre fichier, nommé vector.h; la fonction suivante, sans aucun espace de nommage :
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
17
18
19 #include <iostream> #include <vector> #include "vector.h" // voir autre code, ci-dessous using namespace std; namespace MyNamespace { class MyClass { vector<int> a; friend std::ostream& operator<<(std::ostream &os, const MyClass& obj); }; std::ostream& operator<<(std::ostream &os, const MyClass& obj) { return cout << obj.a; } } // fin de MyNamespace
Le problème est dans l'opérateur de flux pour MyClass : le compilateur ne trouve pas comment sérialiser obj.a, à moins que je ne définisse l'opérateur pour le vecteur au sein de l'espace std (dans le second fichier), ce que je ne suis pas supposé avoir le droit de faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 template<typename T> inline std::ostream& operator<<(std::ostream& out, const std::vector<T>& contents) { ... return out; }
Quelle serait la solution ?
Partager