Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: sf::Packet => obliger d'utiliser deux lignes pour une structure perso  (Lu 2192 fois)

0 Membres et 1 Invité sur ce sujet

Samuel Proulx

  • Full Member
  • ***
  • Messages: 118
    • Voir le profil
Bonjour à tous et à toutes :)

Code de base :
struct SQLData
{
    std::string accountDBIp;
    std::string accountDBUser;
    std::string accountDBPassword;
};

EncryptedPacket& operator <<(EncryptedPacket& packet,const SQLData& d)
{
    packet << d.accountDBIp << d.accountDBUser << d.accountDBPassword;
    return packet;
}
 

Ceci ne fonctionne pas :
packet << i+1 << SQLdata;
//ou
packet << "caractère" << SQLdata;
 

Ceci fonctionne :
packet << i+1;
packet << SQLData;
//ou
packet << SQLData << i+1;
 

Or Laurent, si tu t'en rappelles, tu m'avais dit d'inclure simplement un entier ou enum, peu importe, pour savoir quelle structure se trouve dans le packet. Le i+1, c'est l'identifiant du type de données. La dernière solution où j'inclu le i+1 après n'est donc pas bonne.

Une solution ? Je peux inclure toutes mes structures persos n'importe comment entre elles sur la même ligne, mais je ne peux pas mixer les types primitifs avec mes structures...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : sf::Packet => obliger d'utiliser deux lignes pour une structure perso
« Réponse #1 le: Juillet 23, 2012, 08:07:02 am »
Ton opérateur << attend un EncryptedPacket&, mais les autres opérateurs << (définis dans SFML) renvoient un sf::Packet&. Du coup une fois que tu as appelé un opérateur << de SFML, tu ne peux plus appeler le tien.

Il ne faut jamais faire de surcharge en utilisant tes propres types dérivés, toujours la classe de base. Comme ça tu gardes une compatibilité maximum.
« Modifié: Juillet 23, 2012, 02:46:28 pm par Laurent »
Laurent Gomila - SFML developer

Samuel Proulx

  • Full Member
  • ***
  • Messages: 118
    • Voir le profil
Re : sf::Packet => obliger d'utiliser deux lignes pour une structure perso
« Réponse #2 le: Juillet 23, 2012, 02:35:20 pm »
Ah d'accord merci beaucoup ! (encore une fois)  ;D