Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2801 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Besoin d'aide sur l'initialisation d'une variable dans un constructeur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Besoin d'aide sur l'initialisation d'une variable dans un constructeur

n°667507
kptn
Posté le 08-03-2004 à 17:10:14  profilanswer
 

bonjour,
j'ai petite question de C++ :  
lorsque vous avez un constructeur d'une classe comme suit :  
 
maClasse(const int n, const int v0, const int v1) : m_var(v0, v1);  
 
et que vous voulez changer le constructeur en :  
 
maClasse(const int n, const int v0, const int v1 ...) : m_var(???);  
 
qu'est-ce qui faut mettre dans m_var?


---------------
"il n'y a que deux choses qui sont infinies, l'univers et la betise humaine ... et encore pour l'univers je n'en suis pas sûr !!!" Einstein
mood
Publicité
Posté le 08-03-2004 à 17:10:14  profilanswer
 

n°667510
Taz
bisounours-codeur
Posté le 08-03-2004 à 17:11:24  profilanswer
 

t'es sur que t'as compris ce que c'est que l'initialisation de m_var ?

n°667512
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 08-03-2004 à 17:11:51  profilanswer
 

ben ça dépend des arguments de m_var()
 
edit: [:benou_grilled], à croire qu'il a un bot :D


Message édité par Harkonnen le 08-03-2004 à 17:12:18
n°667524
Taz
bisounours-codeur
Posté le 08-03-2004 à 17:16:09  profilanswer
 

Harkonnen a écrit :


edit: [:benou_grilled], à croire qu'il a un bot :D

j'en suis un en fait

n°667616
kptn
Posté le 08-03-2004 à 18:06:58  profilanswer
 

pour être plus explicite, j'ai une classe avec le constructeur maClasse(const int n, const int v0, const int v1 ...);
j'ai une autre classe qui hérite de cette classe
class C2 : public maClass {
private :
  maClass m_var;
public:
  C2 (const int n, const int v0, const int v1 ...);
};
 
et je dois initialiser m_var;
Une des méthodes étant de faire
  C2 (const int n, const int v0, const int v1) : m_var(n, v0, v1);
mais si on a "..." à la fin du constructeur, on fait comment pour initialiser m_var?
Si jamais c'est pas encore assez clair, je mettrais un exemple complet... :p
mici d'avance ;)


---------------
"il n'y a que deux choses qui sont infinies, l'univers et la betise humaine ... et encore pour l'univers je n'en suis pas sûr !!!" Einstein
n°667620
Taz
bisounours-codeur
Posté le 08-03-2004 à 18:09:31  profilanswer
 

ça existe ça les va_args pour les constructeurs ? si ça passe (ou si certains compilateurs l'accèptent), je déconseille absolutement

n°667628
Taz
bisounours-codeur
Posté le 08-03-2004 à 18:14:37  profilanswer
 

mais pour répondre à ta question, non tu ne peux pas t'en sortir, il faut utilisé les macro va_* pour amorcer le traitement, donc impossible dans l'une initialisation


Message édité par Taz le 08-03-2004 à 18:15:16
n°667676
bjone
Insert booze to continue
Posté le 08-03-2004 à 19:00:57  profilanswer
 

Taz a écrit :

j'en suis un en fait


 
case DEFAULT:
    cout<<"Ta gueule  :o\n";
 
? :D

n°667677
Taz
bisounours-codeur
Posté le 08-03-2004 à 19:01:40  profilanswer
 

bjone a écrit :


 
case DEFAULT:
    cout<<"Ta gueule  :o\n";
 
? :D

default: std::cout << "Ta chatte :o !" << std::flush;

n°667679
bjone
Insert booze to continue
Posté le 08-03-2004 à 19:02:07  profilanswer
 

sinon kptn , tu veux quoi initiliser une liste ou un truc du genre ?

mood
Publicité
Posté le 08-03-2004 à 19:02:07  profilanswer
 

n°667681
bjone
Insert booze to continue
Posté le 08-03-2004 à 19:02:43  profilanswer
 

Taz a écrit :

default: std::cout << "Ta chatte :o !" << std::flush;


 
 :lol:

n°668290
kptn
Posté le 09-03-2004 à 10:55:18  profilanswer
 

J'explique mon probleme :  
j'ai une librairie statique qui marche sous vc++ et je dois la faire marcher sous builder. Pour ça, je dois créer une interface pour chaque classe, ainsi qu'une classe qui implémente cette interface et c'est cette dernière qui va possèder en private une instance de la classe d'origine.

Code :
  1. //Ex : classe de la librairie statique
  2. class C1 {
  3.   int _value;
  4. public:
  5.   C1(const int value) : _value(value) {}
  6.   int getValue() const {return _value;}
  7.   int traitement();
  8. };
  9. //interface :
  10. class iC1 {
  11. public:
  12.   virtual int __stdcall getValue();
  13.   virtual int __stdcall traitement();
  14.   virtual __stdcall ~iC1
  15. };
  16. //Implémentation de l'interface :
  17. class C1Impl : public iC1 {
  18. private:
  19.    C1 m_C1;
  20. public:
  21.    C1Impl(const int value) : m_C1(value) {};
  22.    virtual int __stdcall getValue() {return m_C1.getValue();}
  23.    virtual int __stdcall traitement() {return m_C1.traitement();}
  24. };


Ensuite il suffit de définir un constructeur et un destructeur externe à la classe, mais bon, ça c'est une autre histoire...
Mon problème est que si la classe d'origine est définie comme suit :

Code :
  1. typedef int<double> t1;
  2. class C2 : public t1 {
  3. public :
  4.   C2(const int a, int n, C1 v0 ...);
  5. };


Et là, je dois faire C2Impl, mais comment...?
Sans compté que je n'ai pas l'implémentation de C1 ou C2 sans quoi je n'aurais pas eu à m'emmerder à faire tt ça ^_^
 
Voilà, j'espère que les explications sont suffisantes... Mais mon espoir de pouvoir en faire qq chose s'amenuise...


Message édité par kptn le 09-03-2004 à 16:48:04

---------------
"il n'y a que deux choses qui sont infinies, l'univers et la betise humaine ... et encore pour l'univers je n'en suis pas sûr !!!" Einstein
n°668307
Taz
bisounours-codeur
Posté le 09-03-2004 à 11:11:07  profilanswer
 

typedef int<double>
 
t'as fini tes conneries :o

n°668371
kptn
Posté le 09-03-2004 à 11:59:31  profilanswer
 

Ouais, t'as raison, à force de vouloir trop simplifier la ralité j'ai dis une grosse connerie...
En fait le typedef est défini comme suit
je te met les trucs tels qui sont dans lmon fichier :
 
typedef IloSimpleArray<IloNum> IloNumArrayBase;
avec  
typedef double IloNum;
et
#define IloSimpleArray Array4
avec Array4 une classe du type
template <class X> class IloArray4;
 
Mais bon, ça change pas grand chose au pb d'origine...


---------------
"il n'y a que deux choses qui sont infinies, l'univers et la betise humaine ... et encore pour l'univers je n'en suis pas sûr !!!" Einstein
n°668443
Taz
bisounours-codeur
Posté le 09-03-2004 à 13:39:00  profilanswer
 

ecoute file du vrai code entre cpp
 
C2(const int a, int n, C1 v0 ...);  :o

n°668599
kptn
Posté le 09-03-2004 à 15:04:32  profilanswer
 

puisque tu insistes...
 

Code :
  1. typedef double IloNum;
  2. template <class X> class IloArray4;
  3. template <class X> class IloROArray4 : public IloROHandle {
  4. protected:
  5.   inline X *data(IloInt i) const {
  6.     return &((X*)getImpl()->getBase(i))[i&getImpl()->getMod()];
  7.   }
  8. public:
  9.   IloROArray4(IloArray4I* impl) : IloROHandle(impl) {}
  10.   IloROArray4() : IloROHandle() {}
  11.   IloArray4I* getImpl() const { return (IloArray4I*)IloROHandle::getImpl(); }
  12.   IloInt getSize() const {
  13.     IloAssert(getImpl(), "Empty Handle in IloROArray::getSize" );
  14.     return getImpl()->getSize();
  15.   }
  16.   X operator[] (IloInt i) const {
  17.     IloAssert(getImpl(), "Empty Handle in IloROArray::operator[]" );
  18.     return *data(i);
  19.   }
  20.   IloArray4I* unlock() {
  21.     return (IloArray4I*)IloROHandle::unlock();
  22.   }
  23. };
  24. #define IloSimpleArray IloArray4
  25. typedef IloSimpleArray<IloNum> IloNumArrayBase;
  26. class IloNumArray : public IloNumArrayBase {
  27. public:
  28.   IloNumArray(IloArrayI* i=0) : IloNumArrayBase(i) {}
  29.   IloNumArray(const IloNumArray& cpy) : IloNumArrayBase(cpy)    {}
  30.   IloNumArray(const IloEnv env, IloInt n = 0);
  31.   IloNumArray(const IloEnv env, IloInt n, IloNum v0, IloNum v1 ...);
  32.   IloNumArray(const IloEnv env, int n, IloNum v0, IloNum v1 ...);
  33.   IloNumArray(const IloEnv env, IloInt n, IloInt v0, IloInt v1 ...);
  34.   IloNumArray(const IloEnv env, int n, int v0, int v1 ...);
  35.   IloNumArray(const IloEnv env, IloInt n, int v0, int v1 ...);
  36.   IloNumArray(const IloEnv env, int n, IloInt v0, IloInt v1 ...);
  37.   IloExprNode operator() (IloIntVar) const;
  38. };


 
Voilà le code cpp d'origine... Si ça peut aider...
 
Edit Harkonnen : les balises [ cpp] et [/ cpp] ne sont pas faites pour les chiens :o


Message édité par kptn le 09-03-2004 à 15:06:34

---------------
"il n'y a que deux choses qui sont infinies, l'univers et la betise humaine ... et encore pour l'univers je n'en suis pas sûr !!!" Einstein
n°668668
kptn
Posté le 09-03-2004 à 15:48:30  profilanswer
 

encore eut-il fallu les connaîtres c balises...
je le saurais pour la prochaine fois :p
Enfin... ça me donne pas la réponse à mon pb... :(


---------------
"il n'y a que deux choses qui sont infinies, l'univers et la betise humaine ... et encore pour l'univers je n'en suis pas sûr !!!" Einstein
n°668675
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 09-03-2004 à 15:52:19  profilanswer
 

kptn a écrit :

encore eut-il fallu les connaîtres c balises...


elles sont pas assez visibles dans le formulaire de réponse ? :o

n°668712
kptn
Posté le 09-03-2004 à 16:44:17  profilanswer
 

j'utilisais le textbox "Réponse rapide", donc non les balises sont pas visibles :p
M'enfin, j'aurais du y regarder un peu plus avant...
Mais bon, c bien beau de critique la forme, mais ça fait pas avancer le shmilblick pour antant...!!
...
...
tant pis... j'arriverais bien à trouver qq chose par moi même


---------------
"il n'y a que deux choses qui sont infinies, l'univers et la betise humaine ... et encore pour l'univers je n'en suis pas sûr !!!" Einstein
n°668714
kptn
Posté le 09-03-2004 à 16:46:46  profilanswer
 

au fait, j'ai oublié :
"A mort les Harkonnen! Vive les Atreides!!"  :D


---------------
"il n'y a que deux choses qui sont infinies, l'univers et la betise humaine ... et encore pour l'univers je n'en suis pas sûr !!!" Einstein
n°668731
Taz
bisounours-codeur
Posté le 09-03-2004 à 17:15:02  profilanswer
 

IloNum v1 ...);  
 
 
non fait faut pas rigoler, ça c'est absolument ni du C, ni du C++, si VC++ accepte ça, c'est de la folie douce

n°668753
bjone
Insert booze to continue
Posté le 09-03-2004 à 17:48:07  profilanswer
 

Taz a écrit :

IloNum v1 ...);  
 
 
non fait faut pas rigoler, ça c'est absolument ni du C, ni du C++, si VC++ accepte ça, c'est de la folie douce


 
à ma conaissance ni VC++ (6) ni C++ Builder doivent bouffer ça...

n°668754
Taz
bisounours-codeur
Posté le 09-03-2004 à 17:50:23  profilanswer
 

ni personne normalement

n°668776
kptn
Posté le 09-03-2004 à 18:09:24  profilanswer
 

pourtant j'ai une lib statique qui a été compilé avec vc++ 6 et les .h possèdent ça... dc le compilo doit bien l'accepter...
 
C kler que si ct moi, je ne me serais pas amuser à mettre un truc pareil :p


---------------
"il n'y a que deux choses qui sont infinies, l'univers et la betise humaine ... et encore pour l'univers je n'en suis pas sûr !!!" Einstein
n°668779
Taz
bisounours-codeur
Posté le 09-03-2004 à 18:11:43  profilanswer
 

ben vas y fait un test, crée un truc avec une pareille signature
moi je sors


Message édité par Taz le 09-03-2004 à 18:11:58
n°668781
kptn
Posté le 09-03-2004 à 18:14:28  profilanswer
 

les fichiers que j'ai compilent...
mais bon, je ferais un test avec un seul fichier demain histoire de savoir ce qu'il y a derrière exactement et je te dirais ça ;)


---------------
"il n'y a que deux choses qui sont infinies, l'univers et la betise humaine ... et encore pour l'univers je n'en suis pas sûr !!!" Einstein
n°668912
bjone
Insert booze to continue
Posté le 09-03-2004 à 20:24:03  profilanswer
 

fo faire une routine qui se balade sur la pile....
bonjour le truc casse-gueule... (surtout que passer un pointeur sur Ilo serait ptet plus propre quand même)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Besoin d'aide sur l'initialisation d'une variable dans un constructeur

 

Sujets relatifs
[Java] Polymorphisme : besoin d'explicationsvariable et fonctions ... global
Besoin d'un bouton rotatif[FORUM] Besoin d'un forum convivial, le quel prendre?
une super variableAide sur les classes !
Besoin d'infos sur MDR de NETBEANS[resolu] Personnaliser l'aide d'access
Besoin d'aide en VBS... URGENT 
Plus de sujets relatifs à : Besoin d'aide sur l'initialisation d'une variable dans un constructeur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR