Bonjour à tous,
Cette discussion fait suite à la première du même nom que celle ci.
Je suis en train d'essayer de stocker des données à l'aide de QDataSteam (je sais, c'est du Qt mais je pense que le problème est plus d'ordre C++)
Alors voila, j'ai une structure qui contient un énumératif et j'aimerai l'écrire et le lire convenablement.
En Écriture :
Cela compile (bien sur en complétant ce que j'ai zappe car cela ne sert a rien )
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
20
21
22
23
24
25
26
27
28
29
30
31 enum Test { value_1 = 0, value_2 = 2, value_3 = 42, }; struct help { Test value; }; QDataStream& operator<<(QDataStream &ds, help const& me) { ds << me.value; return (ds) } int main(int ac, char **av) { help me; me.value = value_3; QApplication app(ac, av); QString fileName = QFileDialog::blaBla QFile file(fileName); file.open(...); QDataStream stockage(&file); stockage << me; return (app.exec()); }
Maintenant la lecture :
Cette partie ne compile pas.. Le seul moyen que j'ai trouvé est de remplacer :
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
20
21
22
23
24
25
26
27
28
29
30
31 enum Test { value_1 = 0, value_2 = 2, value_3 = 42, }; struct help { Test value; }; QDataStream& operator>>(QDataStream &ds, help const& me) { ds >> me.value; return (ds); } int main(int ac, char **av) { help me; QApplication app(ac, av); QString fileName = QFileDialog::blaBla QFile file(fileName); file.open(...); QDataStream stockage(&file); stockage >> me; std::cout << me.value << std::endl; return (app.exec()); }
par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 struct help { Test value; };
Et la j'obtiens bien mon 42. Mais je veux pas changer le prototypage de ma structure!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 struct help { int value; };
L'erreur de compilation est la suivante :
erreur: no match for QDataStream& operator>> in ds >> me.help::value
candidates are :
...
note: QDataStream& operator>>(QDataStream&, help&)
note: no known coversion for argument 2 from Test to help&
En espérant avoir exposé le problème avec le plus de clarté possible et en donnant le plus d'indications possible aussi.
Merci d'avance si vous avez une idée.
Partager