probleme d'heritage - C++ - Programmation
Marsh Posté le 31-01-2003 à 12:55:42
Code :
|
t'appelles le constructeur pas copie de ta base et ensuite tu t'occupes de la partie concernant ta classe fille.
En + tu essaies d'utiliser un Copy prenant un Type** mais t'en as pas
Marsh Posté le 31-01-2003 à 13:04:00
Code :
|
Marsh Posté le 31-01-2003 à 13:08:52
yep!! ça marche!!
MERCI
(j'ai juste encore apparement un tit prob a la destruction mais ça devrai etre arrangable)
Marsh Posté le 31-01-2003 à 13:30:13
Code :
|
pk est ce ke mon destrusteur cause une violoation d'acces memoire??
Marsh Posté le 31-01-2003 à 13:36:45
Avec un RGB=NULL ds les constructeurs ca evitera de delete quand il existe pas
Marsh Posté le 31-01-2003 à 19:20:48
imaginons ke j'ai une BASE B et une Matrix Mat je voudrai faire B*=Mat de manier a ce ke juste "la partie" Matrix de B soit modifié
Y'a-t-il moyen avec l'operator tel k'il est défini dans mon code??
Marsh Posté le 31-01-2003 à 19:29:13
je vois pas trop l'utilité de Copy? un constructeur de recopie et un operator= ca fait pas l'affaire?
Marsh Posté le 31-01-2003 à 19:33:48
ouais, c'est vrai ke c'est pas vraipment necessaire; c'est juste ke je trouvai pratique de fair une seul fonction ke j'appel ensuite dans les 2autres...
Marsh Posté le 31-01-2003 à 19:43:22
ben sémantiquement, c'est le role du constructeur par recopie de te donner une copie...., apres tout gravite autour de lui (affectation, swap, etc)
Marsh Posté le 31-01-2003 à 23:14:18
ouais, t'as sans doute raison mais c'est une habitude (en general je fait la même chose avec une fct Erase()), soit, ça reste un detail d'implementation.... je voudrait surtout savoir si je suis obligé de surcharger mon operateur *= pour faire B*=Mat ou si Denis Ritchie a comme d'hab pensé à tout??
Marsh Posté le 01-02-2003 à 06:00:12
Peak a écrit a écrit : imaginons ke j'ai une BASE B et une Matrix Mat je voudrai faire B*=Mat de manier a ce ke juste "la partie" Matrix de B soit modifié Y'a-t-il moyen avec l'operator tel k'il est défini dans mon code?? |
Code :
|
Denis Ritchie s'occipait du C.
C'est Bjarne Stroustrup qu'il faut remercier (ou haïr) pour le C++.
Marsh Posté le 01-02-2003 à 12:57:16
mais dans mon code, BASE hérite de Matrix donc je n'ai pas de "nom" (Mat_) à la Matrix ki constitue ma BASE.
Dans mon code B.M est pointeur de pointeur pas Matrix.
Bon j'avoue ke un heritage étai peu être pas necessaire dans mon cas mais bon j'avai jamais vraiment utilisé d'heritage et me suis dis ke ça me ferai pas de mal....
En fait c'est d'autant plus marrant ke sans definir aucun operateur dans Base je peux fair B1*=B2 et c'est unikement ça partie Matrix ki en est modifié; j'ai provisoirement resolu le prob comme ça mais j'aimerai quand même évité de declaré systématikement des BASE alors ke je fait de multiples operations sur des Matrix ke je fini seulement par combiner à une BASE.
Marsh Posté le 02-02-2003 à 04:36:10
Citation : mais j'aimerai quand même évité de declaré systématikement des BASE alors ke je fait de multiples operations sur des Matrix ke je fini seulement par combiner à une BASE. |
Qu'est-ce qui t'en empêche ?
Marsh Posté le 03-02-2003 à 09:41:02
Code :
|
Chez moi ça marche©.
Montre le code et le message d'erreur.
À tout hasard:
Code :
|
Marsh Posté le 03-02-2003 à 19:17:02
Alors là franchement désolé, je comprend vraiment pas se ke j'ai foutu?
Je lis le post me dis "mais comment sa peux marcher chez lui et pas chez moi"
Je retest chez moi et pouf ça marche j'y comprend vraiment rien.
Je suis absolument certain ke ça ne marchait pas y'a 3jours j'ai testé une dizaine de fois
(j'ai sens doute changé un truc ke j'aurai pas du entre temps....)
mieux vaut ça ke le contraire
Merci à toi ho MUSARAN!
et a tous les autres ki mon aidé dans ce topic!!
Marsh Posté le 31-01-2003 à 12:47:05
je ne comprend pas où est mon erreur??
les trois premieres lignes du main s'executent sans prob, donc la class Matrix ne pose pas de prob par contre la ligne suivante cause une erreure, je ne comprend pas l'erreur (a mon avis ça doit être un truc dont je suis pas aucourant appropos des héritages...)
voici le code: (c'est le constructeur de copie de la class BASE ki couille)
*error C2664: 'Copy' : cannot convert parameter 1 from 'unsigned int **const ' to 'const class BASE<unsigned int> &'
Reason: cannot convert from 'unsigned int **const ' to 'const class BASE<unsigned int>'
J'ai pourtant surchargé mon opérateur de copie dans la class Matrix
Message édité par peak le 31-01-2003 à 12:54:16