eupeup
Messages postés57Date d'inscriptionmardi 11 mars 2003StatutMembreDernière intervention24 avril 2013
-
31 mai 2010 à 12:04
eupeup
Messages postés57Date d'inscriptionmardi 11 mars 2003StatutMembreDernière intervention24 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 :
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!!!!!
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.