Crée un objet getPosition() surchager

Résolu/Fermé
Creuilcreuil Messages postés 44 Date d'inscription jeudi 1 janvier 2015 Statut Membre Dernière intervention 7 septembre 2015 - 1 janv. 2015 à 18:14
ElementW Messages postés 4814 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 1 janv. 2015 à 22:13
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 4814 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 227
Modifié par gravgun le 1/01/2015 à 18:24
'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 44 Date d'inscription jeudi 1 janvier 2015 Statut Membre Dernière intervention 7 septembre 2015 2
1 janv. 2015 à 18:23
Merci.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
1 janv. 2015 à 18:34
Bonjour,

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

Cdlt,
0
ElementW Messages postés 4814 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 227
Modifié par gravgun le 1/01/2015 à 20:57
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
Modifié par fiddy le 1/01/2015 à 22:09
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 4814 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 227 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
Modifié par gravgun le 1/01/2015 à 22:14
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