surcharger l'operator[] ??? - C++ - Programmation
Marsh Posté le 22-08-2004 à 22:07:18
commence par filer du vrai code et expliquer ce que tu veux faire
Marsh Posté le 22-08-2004 à 22:21:56
ben en faite j'ai une classe de fractions et j'aimerais utiliser les tableaux de la meme maniere qu'avec des int mais avec des fractions!
Marsh Posté le 22-08-2004 à 22:24:05
et en première année on t'as pas appris comment on fait un tableau ?
<type des éléments> <nom du tableau>[ <nombre d'éléments> ] |
ou <nombre d'éléments> est connu à la compilation.
Marsh Posté le 22-08-2004 à 22:25:47
ou est le probleme ?
j'ai pas compris, tu veux faire quoi concretement ?
Marsh Posté le 22-08-2004 à 22:33:18
je veux remplir un tableau d'objet! et j'ai beau faire
Fraction a,b
Fraction c[]={a,b};
c n'est pas un tableau comme on l aurait si on faisait
int a,b;
int c[]={a,b}
c clair comme ca ou non?
Marsh Posté le 22-08-2004 à 22:35:36
tu sais ce que ca fais ca precisement ?
int a,b;
int c[]={a,b}
Marsh Posté le 22-08-2004 à 22:39:43
cris56 a écrit : tu sais ce que ca fais ca precisement ? |
ben int a,b; ca définit 2 variables (ca met n importe quel nombre)
et int c[]={a,b} ca remplit le tableau c avec les valeurs a et b,
c[i] ca signifie juste *(c+a), c est juste l'adresse de l'élément initial du tableau et c+i l adresse de l'élément i ...
voila quoi!
Marsh Posté le 22-08-2004 à 22:45:27
et pourquoi tu t'interdit de faire la même chose avec des classes ?
Marsh Posté le 22-08-2004 à 22:47:02
Code :
|
et je voudrais que ce soit
Code :
|
dans ma classe matrice!!!
Au nivo de l'interet c'est simple: dans les operations matricielles ce sera 20 fois plus facile simplement parce que je peut utiliser par exenple juste a*b avec a=22/6 et b=51/4
Marsh Posté le 22-08-2004 à 22:48:21
tu fera attention tu a ecrsi 2 fois le constructeur par defaut dans ta classe fraction
Marsh Posté le 22-08-2004 à 22:49:15
ben fais le
sauce template si t'en es capable.
sinon on peut t'orienter vers des bibliothèques avec déjà tout.
Fraction(int n=0,int d=1)
Fraction()
oh la jolie ambiguité
Marsh Posté le 22-08-2004 à 22:52:39
cris56 a écrit : ou est le probleme avec Fraction tab[5][5]; ? |
si je fais
Code :
|
par exemple ca me dit
'd' : 'class Fraction []' differs in levels of indirection from 'class Fraction'j'ai oublié quoi??? ou j ai mal compris quoi?
Marsh Posté le 22-08-2004 à 22:55:00
Taz a écrit : ben fais le |
1) lol j'ai deja suffisament de mal pour faire ca en template, c trop abstrait pour moi pour l instant
2) Je fais cette class est le reste sans aucune utilité pratique derriere mais juste pour apprendre donc ce serait plus cool si j y arrivais tout seul en comprenant!
Marsh Posté le 22-08-2004 à 22:56:13
tu sais apprendre à utiliser une bibliothèque, c'est un exercice comme un autre.
Marsh Posté le 22-08-2004 à 22:56:37
cris56 a écrit : ta 2 fois une variable d ! |
aRRRRRRRRRRRRRRRRRRRRRRGGGGGGGGGGGGHHHHHHHHHHHH la honte ... ca fais 2heures que je cherche et que je capte pas pourquoi ca marche pas... mince alors lol !!!!
ben trop merci, je vais me repencher la dessus!!! quel bétise!!! lol
ps: sinon Taz, pkoi int main et pas void???
Marsh Posté le 22-08-2004 à 22:57:42
c'est dans le standard c++, question de portabilité, sur certain systeme void main() ne compile pas
Marsh Posté le 22-08-2004 à 22:58:18
parce que c'est comme ça, la Sainte Norme le dit. pour toi ça ne change rien, tu mets int à la place de void, et comme les Écritures le dise, tu peux te passer de 'return 0' final, celui-ci étant implicite. Bref tu économises 1 caractère et tu rends ton programme conforme.
Marsh Posté le 22-08-2004 à 22:59:11
cris56 a écrit : c'est dans le standard c++, question de portabilité, sur certain systeme void main() ne compile pas |
ah ok!
euh sinon pk :
Code :
|
ca marche pas???
Sachant
Code :
|
dans ma classe fraction...
Marsh Posté le 22-08-2004 à 23:00:44
quoi ça marche pas ? tu veux pas faire sans friend ?
remarque:
"une chaine" 'c' <- un caractère.
Marsh Posté le 22-08-2004 à 23:05:02
Taz a écrit : quoi ça marche pas ? tu veux pas faire sans friend ? |
ben euh... c'est a dire que sans friend je sais pas comment le mettre dans la fonction ...
Marsh Posté le 22-08-2004 à 23:07:29
moi je te conseille de ne pas utiliser friend, du moins qu'en dernier recours
Code :
|
est une manière répandue de procéder.
après
Code :
|
Marsh Posté le 22-08-2004 à 23:15:35
rooo non ca marche pas, ca affiche toujours n'importe quoi...comme si le Fraction e[]={b,c,d} faisait Fraction e[]={}
Marsh Posté le 22-08-2004 à 23:18:33
bon en fait mon code source sans rien... c
Code :
|
allez dites moi ce que j ai betement oublié
Marsh Posté le 22-08-2004 à 23:19:12
t'as ton constructeur de recopie et ton operator= ? si ta classe est simple, même pas la peine de les définir, le compilateur générera quelque chose d'acceptable
il te faut, selon Copline:
constructeur par défaut, constructeur avec arguments, constructeur de recopie, operator= et destructeur. je te conseille de les définir, des mettres de s affichages dedans pour bien comprendre ce qui se passe.
Marsh Posté le 22-08-2004 à 23:24:23
Taz a écrit : Fraction(const Fraction& ){} |
Fraction(const Fraction& r):num(r.num),den(r.den){}
Marsh Posté le 22-08-2004 à 23:26:43
Victoire ca marche!!! ROOLLLALA comment j suis trop content!!!
Trop merci les mecs!!! j'en dormirais mieux!!!
Marsh Posté le 22-08-2004 à 22:05:16
J'ai un big probleme, j'aimerais utiliser ma class
[cpp]
class m{
m(int ja=1,int jb=2)a(ja),b(jb){}
private a,b;
};
[cpp]
du genre
[cpp]
void main(){
m a,b,c,d;
int tableau[]={a,b,c,d};
}
[cpp]
Comment faire?