IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Template, classes, héritage et gros problème


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de alpha_one_x86
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut Template, classes, héritage et gros problème
    Bonjour, je vais essayer d'étre claire, mais c'est déjà pas bien claire dans ma tête.
    J'ai vu le topic http://www.developpez.net/forums/d12...pecialisation/, je ne sais pas si ça as un lien avec mon sujet ou pas. (Pas le niveau en template).
    J'ai une énorme map divisé en chunk. Cela est dans un contexte jeux 2D, jeu solo et jeu multi + serveur.

    • Chaque chunk contiens le chunk d'as coté, la taille un chunk, couche de colision, ...
    • Sur la partie serveur j'ai des méta-données qui sont: liste de joueurs sur chaque chunk, ...
    • Sur la partie client j'ai des méta-données qui sont: image pour les tiles, ...


    J'ai des classes qui vont avoir besoin des méta-donnée spécifique, et d'autre non.
    Je m'explique:
    • Pour les déplacement générique j'ai besion juste des info des chunks (générique), utilisé pour les bot, qui sont des clients sans besoin de méta-données, car il n'utilise pas l'affichage
    • Utilisation du point 1) + Sur le client je fait la même chose, mais je doit toujours avoir les méta-données (pour afficher map courrante et proche)
    • Utilisation du point 1) + Sur le serveur je doit avoir les méta-données, pour envoyé les déplacements du joueurs courrant aux autre joueurs

    Et les bots, sont coté serveur, donc je leur passe les chunks avec méta-données serveur.

    Et donc voila, je maitrise un minimum l'héritage, pas du tout les templates. Et la j'ai besoin d'un joyeux bordel pour faire proprement tout ça.
    Faire 2x structure de données, m'obligae à faire 2x la classe, non?

    J'ai pensais faire 2 strucutre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Map_server
    {
    Map_server *map_left;
    ...
    }
    Map_client
    {
    Map_client *map_left;
    ...
    }
    Et les méthodes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    void moveBasic(Map_server * baseMap);
    void moveClient(Map_client * baseMap);//moveClient hériterai de Map_server et ou Map_server serai caster en Map_client
    Bref, je sens qu'il me manque des connaissances pour évité la duplication de code.
    Merci d'avance de votre aide.

  2. #2
    Membre émérite
    Avatar de Ekleog
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Par défaut
    Peut-être la solution serait-elle de créer trois classes, et non deux.
    Une classe Map, les données d'une map communes à clients et serveurs.
    Une classe Map_client, qui ajoute les données spécifiques aux clients (et qui hérite de Map).
    Une classe Map_server... tu devines !

    Tu compilerais Map_server uniquement pour la construction de l'exécution côté serveur, et Map_client pour celle de l'exécution côté client.

    Qu'en penses-tu ?

  3. #3
    Membre éclairé
    Avatar de alpha_one_x86
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut
    Le problémes, c'est que je passe d'une map à une autre, dans un cas je fait:
    Map * map=(quelque chose en Map *);
    Et donc je le fait dans la classe map, lors d'une sortie map.
    Hors quand je suis en Map_server, je doit avoir Map_server.
    En gros l'objet private, doit étre de type Map * pour la classe Map, et de type Map_server * pour la classe Map_server...

    EDIT: je suis en train justement de coder pour matérialisé le probléme.

    Voila l'exemple:
    https://github.com/alphaonex86/Pokec...ntStructures.h
    https://github.com/alphaonex86/Pokec...erStructures.h
    Ou j'ai mes objects pour les maps.

    La duplication de code (même code à 100%):
    https://github.com/alphaonex86/Pokec...Map_Client.cpp
    https://github.com/alphaonex86/Pokec...Map_Server.cpp

    Et dans la def juste un type de variable qui change:
    https://github.com/alphaonex86/Pokec...heMap_Client.h
    https://github.com/alphaonex86/Pokec...heMap_Server.h
    MoveOnTheMap_Client *map; <-> Map_server *map;

    Et c'est pas la 1ére fois que je suis bloquer comme ça.

  4. #4
    Membre émérite
    Avatar de Ekleog
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Par défaut
    Tu fusionnes MoveOnTheMap_* ; et tu leur donne un pointeur sur Map.
    Tu fais hériter Map_Client et Map_Server de Map.
    Map contient toutes les données indépendantes de si c'est un client ou un serveur, les fonctions qui travaillent uniquement dessus, et potentiellement des fonctions virtuelles, si nécessaire.

    Et c'est bon !

  5. #5
    Membre éclairé
    Avatar de alpha_one_x86
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut
    Ca fait que dans ma classe qui hérite de MoveOnTheMap_Server je doit avoir:
    Map_client map_spec;
    Et j'hérite:
    Map map;
    Soit 2 pointeur sur la même variables. Ou je doit caster comme un porc...
    Non?

    Si j'hérite d'une classe avec une template...?

  6. #6
    Membre émérite
    Avatar de Ekleog
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 448
    Par défaut
    Quelle classe qui hérite de MoveOnTheMap_server ?
    As-tu bien compris ce que je te conseillais ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gros problème Template framework Gantry
    Par redaben dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 03/06/2014, 00h31
  2. Fonction Template dans une classe & Héritage
    Par Drannor dans le forum Langage
    Réponses: 1
    Dernier message: 15/09/2011, 17h20
  3. Gros problème de classe inexistante
    Par mrrenard dans le forum C#
    Réponses: 6
    Dernier message: 01/02/2008, 15h07
  4. Héritage classe template->classe template
    Par zabibof dans le forum Langage
    Réponses: 5
    Dernier message: 11/08/2007, 11h05
  5. Foncteur, classes templates et héritage
    Par Floréal dans le forum C++
    Réponses: 8
    Dernier message: 17/06/2007, 21h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo