Renvoie de type int&

saturne_1606 Messages postés 29 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 23 juin 2006 - 7 avril 2004 à 19:32
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 8 avril 2004 à 08:46
Bonjour a tous!

Voila g la fonction suivante:
int& tableau::operator ()(int l, int c)
{
    if ((l>=tab.size())||(c>=(tab[l]).size()))
    {
        cout << "L'element ("<<l<<","<<c<<") n'existe pas."<<endl;
        return ?;
    }
    return tab[l][c];
}

sachant que tab est en fait un vector<vector >.
Que faut t-il que mette à la place du ? pour que le programme ne fasse pas d'erreur.

Merci bcp pour votre aide.

11 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
7 avril 2004 à 20:49
Il te suffit de renvoyer une référence vers un int, normalement, un "&0" devrait marcher.

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0
saturne_1606 Messages postés 29 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 23 juin 2006
7 avril 2004 à 20:54
Le compilateur me donne l'erreur suivante aprés ta correction :
non-lvalue in unary `&'
Merci de ton aide
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
7 avril 2004 à 21:22
return 0;
0
saturne_1606 Messages postés 29 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 23 juin 2006
7 avril 2004 à 21:48
tu pense bien que g aussi essayer return 0; mais idem, il me dit que le type ne correspond pas
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
7 avril 2004 à 22:00
const int tableau::ERREUR=-1;

...
return ERREUR;
0
saturne_1606 Messages postés 29 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 23 juin 2006
7 avril 2004 à 22:07
Le compilateur me dit ceci :
`const int tableau::ERREUR' is not a static member of `class tableau'
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
7 avril 2004 à 23:02
ben parce que initialiser comme ca ca ve dire que ERREUR est un membre static de la classe tableau

faut donc pas oublier de le declarer en static dans tableau

class tableau
{
...
static const int ERREUR;
};

const int tableau::ERREUR=-1;

int& tableau::operator ()(int l, int c)
{
if ((l>=tab.size())||(c>=(tab[l]).size()))
{
cout << "L'element ("<<l<<","<<c<<") n'existe pas."<<endl;
return ERREUR;
}
return tab[l][c];
}
0
saturne_1606 Messages postés 29 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 23 juin 2006
7 avril 2004 à 23:20
Aprés modif, toujours une erreur
conversion from `const int' to `int &' discard qualifiers
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
7 avril 2004 à 23:26
t sur?

tu a bien fait comme ca?

#include 

struct tableau
{

static int ERREUR;

int& f();
};

int tableau::ERREUR=-1;

int& tableau::f()
{
return ERREUR;
}

int main()
{

tableau t;
std::cout << t.f() << std::endl;
}
0
saturne_1606 Messages postés 29 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 23 juin 2006
8 avril 2004 à 01:00
Merci pour ton aide.
C bon, g réussi a resoudre mon prob
Il m'a suffit de faire
int ERREUR=-1;

au début du programme

puis dans la fonction
return ERREUR;


Merci qd mm
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
8 avril 2004 à 08:46
quoi qu'il en soit tu aura retenu que int& en retour ou en parametre d'une fonction ca ve juste direqu'il sera passer par reference (par adresse) apres c'est transparent
sinon renvoyer un reference sur un tyoe de base ca a pas trop d'interet
0
Rejoignez-nous