Crée un objet getPosition() surchager

Résolu
Creuilcreuil Messages postés 54 Statut Membre -  
ElementW Messages postés 5690 Statut Contributeur -
Bonjour,

je débute en c++ et je voudrait savoir comment avoir mon propre getPosition() et pouvoir lui
demander de retourne par exemple la position X, ex:"getPosition().x".

Pour l'instant j'utilise un objet spécial pour cette tache "getPositionX()" mais c'est pas très propre.

Mercie de m'avoir lue.
A voir également:

2 réponses

ElementW Messages postés 5690 Statut Contributeur 1 224
 
'lut, tu peux retourner une
struct
aussi ;)
struct Coord {
    int x, y;
};

class Object {
private:
    int x, y;

public:
    Coord getPosition() const;
};

// et dans le .cpp

Coord Objet::getPosition() const {
    // Si tu fais du C++11:
    return Coord { x, y };
    
    // Sinon, pour le C++ "normal":
    Coord c; c.x = x; c.y = y;
    return c;
}
Après niveau performance, quand c'est pas optimisé par le compilateur y'a une copie de la structure lors du renvoi. Sinon, les RVO (return value optimization) font disparaitre la perte de performance.
from human import idiocy
del idiocy
0
Creuilcreuil Messages postés 54 Statut Membre 2
 
Merci.
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Bonjour,

Au lieu de la structure, il vaudrait mieux faire une classe Coordonnees.

Cdlt,
0
ElementW Messages postés 5690 Statut Contributeur 1 224
 
Dans l'absolu ça ne change rien, une structure étant une classe sans membres privés, et sans constructeur ni opérateur de copie/déplacement dans le cas d'une struct POD.
0
fiddy Messages postés 11653 Statut Contributeur 1 847
 
Comment ça une structure est une classe sans membres privés ? sans constructeur ?

En C++, effectivement struct et class sont quasiment identiques. Mais par convention, on utilise struct en C++ comme on le fait en C (pas de fonctions membres, etc.), et pour le reste on utilise plutôt class.
Après et comme souvent, chacun est libre de respecter les conventions...
0
ElementW Messages postés 5690 Statut Contributeur 1 224 > fiddy Messages postés 11653 Statut Contributeur
 
rien n'interdit l'utilisation de membres privés
Oui j'ai mal dit, en effet je pensait à la visibilité publique par défaut.

Non plus...
J'ai précisé que c'est dans le cas où il s'agit d'une struct POD...

Quant à l'utilisation, effectivement chacun ses gouts et son utilisation. Toutefois les fonctions membres sont ici des méthodes, qui donc n'ont pas d'incidence sur la structure elle-même, à l'instar d'un pointeur de fonction qu'on mettrait en C; où dans les deux cas on est obligé de passer un pointeur vers "l'objet" concerné (
this
en C++, dont le passage en argument est automatique (après ça dépend des conventions d'appel et de mangling), et une variable manuelle en C
thiz
,
self
, ou autre)
0