maquette de classes pour avoir du polymorphisme
Bonjour,
J'écris un programme de simulation (devant s'interfacer avec Matlab mais pas
aujourd'hui) et je cherche a décomposer en classes: certaines pour faire des
opérations sur les données, d'autres prenant ces données pour faire des
imports/exports sur fichier. En gros je voudrais savoir comment passer un
objet std::vector<double> d'une classe a une autre.
Pour l'instant une maquette de mon code ressemble à ca (ce n'est qu'une
maquette):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class MaClasseBase {
public:
MaClasseBase(std::vector<double> entrees, int dsize, int dnp);
~MaClasseBase(void);
// MaClasseBase(const MaClasseBase &source);
// MaClasseBase &operator=(const MaClasseBase &source);
virtual bool entre(void);
bool recalcule(void); // va appeler entre()
// virtual bool recalcule(void);
bool pass_iodata(std::vector<std::pair<double,double>> listy, int select);
std::vector<double> valeurs;
std::vector<double> newvaleurs;
protected:
std::vector<double> coeffs;
int size;
int np;
}; |
le corps de la methode membre pass_iodata(listy, select) contient:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
int k, sel=1;
std::pair<double, double> singleton;
for (k=0; k<size; k++) {
singleton.first = (double (k))*Ts;
switch (sel) {
case 1: singleton.second = newvaleurs[k]; // more case when complete
break;
}
std::cout << singleton.second << " ";
list_yh.push_back( singleton );
} |
(Vu la déclaration de la classe MaClasseBase (et celles qui suivront) je précise
que je souhaiterais faire du polymorphisme avec un pointeur type de la classe de base
sur une classe dérivée.)
Y-aurait-il un moyen de se remplacer cette méthode par un constructeur copie de
l'objet std::vector<double> newvaleurs? Ou de spécifier aussi une méthode
exportant ce vecteur dans un fichier en prenant une reférence const en entrée?
Je suis juste à la recherche d'une version marchant, pas forcement optimisée,
mais sans trop réinventer. Je vous remercie d'avance