recupere ou mettre a jour un tableau de double dans une classe - C++ - Programmation
Marsh Posté le 02-11-2005 à 08:06:32
Plusieurs raisons expliquant que cela ne fonctionne pas.
- Tu uilise des tableau statiques => tu ne peux pas ecrire
titi=get_toto(); mais tu devrais plutot ecrire une boucle for(inti ....) et remplir ton tableau statique element par element.
- ensuite tu utilise des tableaux et tes methodes de classe prennent en parametre une simple variable double. Il te faut donc passer des double* en parametre.
Essaies avec des trucs comme cela
class myClass {
private:
int nbVal_;
double* toto_;
public:
myClass() : nbVal_(10) {
toto_ = new double[nbVal_];
init();
}
myClass(int val) : nbVal_(val) {
toto_ = new double[nbVal_];
init();
}
void init();
double* get_toto(){return toto_;};
void set_toto(double* tata){toto_=tata;};
};
void myClass::init() {
for(int i=0 ; i < nbVal_ ; i++)
toto_[i] = i;
}
int main(void) {
double* titi;
double tata[10] = {11,22,33,44,55,66,77,88,99,1010};
myClass *objet=new myClass();
titi=objet->get_toto();
std::cerr<< titi[3] << std::endl;
objet->set_toto(tata);
titi=objet->get_toto();
std::cerr<< titi[3] << std::endl;
return0;
}
Marsh Posté le 03-11-2005 à 21:51:58
Code :
|
c'est quoi ça, on est pas en Java !
Code :
|
c'est mieux non ?
Marsh Posté le 03-11-2005 à 22:04:08
Code :
|
remarques :
Marsh Posté le 04-11-2005 à 00:56:52
ReplyMarsh Posté le 04-11-2005 à 20:24:21
ok j'exagère un peu, disons que pour rendre un new (ou malloc) exception safe, il faut ajouter du code, ce qui n'est pas le cas avec les containers.
ex :
Code :
|
si le deuxième new échoue, lancement de bad_alloc et pas d'objet m créé. m_tata est perdu et innacessible.
Code :
|
Volume de code équivalent, si l'allocation à l'intérieur de vector<float>(42); échoue, la mémoire de m_tata est libérée.
Code :
|
Lourd et moche.
Marsh Posté le 05-11-2005 à 00:02:10
jesus_christ a écrit : ok j'exagère un peu, disons que pour rendre un new (ou malloc) exception safe, |
abus de langage (au mieux), je crois que l'on dirait plutot dans ce cas : rendre le constructeur exception safe.
Sinon, tes exemples illustre bien un des arguments principal contre les tableaux C-style en C++.
Marsh Posté le 01-11-2005 à 23:54:40
Hola tout le monde,
J ai une classe du type:
[#ff0000][#ff0000]class myClass
{
pritate:
double toto[10];
public:
double get_toto(){return toto;};
void set_toto(double tata){toto=tata;};
}[/#ff0000][/#ff3800]
dans un progamme j ai un objet
double titi[10];
myClass *objet=new myClass();
titi=objet->get_toto();
objet->set_toto(titi);
Les deux derniere commande ne marche pas.... je ne sais pas comment recuperer ou mettre a jour mon tableau de double toto.... Quelqu un pourrait il m expliquer ?