PB, UN PEU D'AIDE SVP!!!!

Résolu
eupeup Messages postés 57 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 24 avril 2013 - 31 mai 2010 à 12:04
eupeup Messages postés 57 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 24 avril 2013 - 31 mai 2010 à 17:27
Bonjour à tous,

j'ai un soucis avec un projet que je suis en train de développer...
Je commence à peter un cable, et je sais pas si c'est une erreur évidente que j'arrive pas à voir, ou si ca peut marcher définitivement...

Donc en gros mon code donne ca : j'ai deux classes

COneFactorCopula(const double correlation,
double maximum = 5.0,
int integrationSteps = 50,
double minimum = 5.0) {.....}

J'ai une seconde classe, qui hérite en publique de la première :

class COneFactorGaussianCopula : public COneFactorCopula {
public :

COneFactorGaussianCopula(double correlation,
double maximum,
unsigned int integrationStep = 50) :
COneFactorCopula(correlation,maximum, integrationSteps) {}

...

J'ai utilisé l'héritage, car j'ai des fonctions virtuelles pures et d'autres non, et je veux qu'elle fonctionne au cas où j'aurai un autre objet similaire à COneFactorGausianCopula qui heriterait aussi de COneFactorCopula (à titre d'exemple, on pourrait imaginer un COneFactorStudentCopula... enfin bref)
Ensuite j'ai une autre classe CCalc qui prend en argument et qui utilise un COneFactorCopula dans son constructeur...

Finalement j'ai un dernier fichier, dans lequel je souhaite utiliser ce CCalc, donc dans un premier temps je fais un include de mon CCalc, et aussi de COneFactorGaussianCopula

Et là, c'est le drame... j'ai trois erreurs avant toute autre chose :

COneFactorCopula : class type redefinition
COneFactorCopula : base class undefined
COneFactorGaussianCopula : illegal member initialization : COneFactorCopula is not a base or a member

Donc pour les premières, les fichier CCalc et oneFactorGaussianCopula contiennent les .h de COneFactorCopula... donc en incluant ces deux fichiers il y a un soucis... mais dans ce cas là, comment faire....
car en incluant juste CCalc, j'ai pas acces à mon objet COneFacotrGaussianCopula..

Mais pour le reste je vois pas ..

Si quelqu'un peut m'aider, ce serait vraiement genial!!!!!

Merci d'avance

4 réponses

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
31 mai 2010 à 13:41
As-tu mis une guarde dans chacun de tes fichiers .hh ?

Ex:
#ifndef CONEFFACTORGAUSSIANCOPULA_HH_
# define CONEFFACTORGAUSSIANCOPULA_HH_

class COneFactorCopula
{
public:
  //Code de COneFactorCopula... etc
};

#endif /* !CONEFFACTORGAUSSIANCOPULA_HH_ */


_____________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
3
eupeup Messages postés 57 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 24 avril 2013
31 mai 2010 à 15:19
Euh non... et je viens de le faire pour les trois classes concernées et ça marche.... hehe

Merci beaucoup... c'etait donc un truc évident...
D'ailleurs, tu peux m'expliquer pourquoi c'est nécessaire?

En tout cas merci encore...

Peupeu
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
31 mai 2010 à 17:01
Une garde garantie qu'un header ne sera inclus qu'une seule et unique fois.
Si tu fais ceci:

#include "pouet.hh"
#include "pouet.hh"
#include "pouet.hh"
#include "pouet.hh"

Alors pouet.hh ne sera inclus qu'une seule fois si il y a une garde. Mon exemple peut paraître débile, mais c'est un cas qui arrive tout le temps, mais qui est plus subtile.
Par exemple quand tu fais un #include à de nombreux endroits, tu n'as pas de souci. C'est parce qu'il y a une garde sur ce fichier.

Techniquement, tu inclus le fichier, et tu dis que tu l'as inclus (via #define). La prochaine fois que tu veux inclure ce fichier, tu vas regarder via #ifndef, si le define a déjà été fait. Si celui ci a déjà été effectué, alors tu ne l'inclus pas une deuxième fois.

_____________________________________________
Historique de mes créations, et quelques articles:[ http://0217021.free.fr/portfolio
http://0217021.free.fr/portfolio]
0
eupeup Messages postés 57 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 24 avril 2013
31 mai 2010 à 17:27
Ok j'ai compris... merci pour ton explication...
0
Rejoignez-nous