CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

(C++) Classes

[exit]
[exit]
Niveau 5
03 février 2006 à 19:52:11

Dans un projet, je suis amené à écrire une classe Cursor qui contiendra diverses informations sur la position courante du curseur de la souris.

Elle sera utilisée au sein d´une classe Jeu, qui se chargera nottament de faire le lien avec le framework pour récupérer les informations sur la souris grâce aux fonctions appropriées afin de mettre à jour les paramètres de l´objet Cursor.

Pour ce faire, je pensais avoir recours à une fonction membre "SetX(...)" etc... le problème c´est que cette fonction sera alors accessible par n´importe qui (on pourra ainsi modifier la possition de la souris indépendement d´un évènement lié)

Comment faire pour contourner ce problème ?

Autrement dire disposer d´une interface générale permettant simplement de récupérer les infos du Cursor, avec "GetX()", sans pouvoir les modifier avec "SetX(...)...", pour n´importe quel utilisateur, et disposer d´une interface permettant à la classe Jeu de mettre à jour les infos de la souris ?

Utiliser :

class Cursor
{
friend class Jeu;

public:
int GetX();

// ...
}

Me semble la meilleure solution, mais le friend me gêne...

dnob700
dnob700
Niveau 10
03 février 2006 à 21:45:22

Pourquoi le friend te gène ? c´est la méthode la plus simple à utiliser et celle qui est prévu pour ça.

Sinon, ta classe jeu peut hériter de Cursor (et le SetX serait private) mais c´est déjà moins bien si ce n´est pas ce que tu veux.

LGV
LGV
Niveau 28
03 février 2006 à 22:33:59

=> c´est mal concu.. si tu y vas a coup de friend, t´as pas besoin d´interface pour manipuler l´objet depuis Jeu, et c´est la porte ouverte a toute les fenetres..
je commencerais par m´interroger sur le role precis de chaque composant. pourquoi le cursor a t il besoin d´etre pilote par le jeu ? peut-on inverser les roles ? etc.
si tu n´as qu´un curseur, une solution consiste a en faire une classe locale et exporter l´interface de getters au niveau du jeu
tu peux aussi maintenir des liens entre le jeu et le cursor.
les barbares iront a coup de hack des private, mais a ce moment la le friend reste plus interessant.
bref, sans plus d´info, je dirais que la classe locale et l´interface exportee pourrait solutionner ton pb ; mais le design global est p-e foireux pour que le cursor se voit dependant du jeu.

[exit]
[exit]
Niveau 5
04 février 2006 à 12:49:23

Cursor n´est pas dépendant du Jeu en lui même, mais j´ai voulu qu´il soit indépendant du système d´exploitation, pour lequel Jeu fait office d´interface entre les classes liées à la gestion de l´application et le reste du programme.

L´ensemble est peut être mal concu, je modifierais tout ca, merci à vous :ok:

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment