Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/12/2019, à 11:59

chris7522

[C++] Declaration et initialisation de référence sur une structure

Bonjour a toutes et a tous ,
   Tout dabord , voici le code :

#include <iostream>
struct Coordonnees
{
    int x=5;
    int y=10;
};

void change(Coordonnees &reference);
using namespace std;

int main()
{
    Coordonnees point;
    
    cout << "x (avant fonction) : " << point.x << endl; 
    cout << "y (avant fonction) : " << point.y << endl;
    change(point); 
    cout << "x (apres fonction) : " << point.x << endl; 
    cout << "y (apres fonction) : " << point.y << endl;
    return 0;
}

void change(Coordonnees &reference) 
{
    int temp;
    temp=reference.x;
    reference.x = reference.y;
    reference.y = temp;
}

   En regardant ce code , je ne comprends pas pourquoi la reference (&reference ) n'a pas été initialisé avec point , dans la mesure ou ma fonction "change" recoit une reference de type coordonnees . J'ai lu par ailleurs , qu'une référence doit etre initialisée des sa déclaration .  Je voyais plutot ca de cette facon :

int main()
{
    Coordonnees point;
    int &reference = point;
    .......
}

C'est pas tres claire dans ma tete . Merci de votre aide

Dernière modification par chris7522 (Le 17/12/2019, à 12:23)

Hors ligne

#2 Le 17/12/2019, à 13:20

pingouinux

Re : [C++] Declaration et initialisation de référence sur une structure

Bonjour,
Peut-être ceci :

    Coordonnees point;
    Coordonnees &ref=point;

Hors ligne

#3 Le 17/12/2019, à 13:39

NicoApi73

Re : [C++] Declaration et initialisation de référence sur une structure

Bonjour,

int &reference fait référence à une variable, qu'il faut que tu initialises impérativement. Dans l'exemple suivant, reference et n adresse le même emplacement mémoire.

int n;
int &reference = n;

Si tu fais n = 5, alors reference = 5

Si tu fais reference = 6, alors n = 6.

point est de type Coordonnees, reference est de type int. Ca ne va pas ensemble, il faut les mêmes types (ou en tout cas la même classe de base)

EDIT : passer par une structure est littéralement correct, néanmoins l'emploi d'une classe est souhaitable

Dernière modification par NicoApi73 (Le 17/12/2019, à 14:05)

Hors ligne

#4 Le 17/12/2019, à 18:22

chris7522

Re : [C++] Declaration et initialisation de référence sur une structure

Merci a tous les deux , c'est parfaitement claire smile

Hors ligne