Ho fatto una prova qui, col codice seguente ottengo tutti zero
E anche con questocodice:// Example program #include <iostream> #include <string> class Prova { public: Prova():valore {0.0}{}; void getValore() { for(unsigned int i=0;i<5;i++) { std::cout<<"\n"<<valore[i]; } }; //altro... private: double valore[5]; //altro... }; int main() { Prova prova; prova.getValore(); }
Con questo codice, e anche il successivo, ottengo 33 solo al primo elemento, gli altri sono zero. In basso, il compilatore è settato a C++14.codice:// Example program #include <iostream> #include <string> class Prova { public: Prova(){}; void getValore() { for(unsigned int i=0;i<5;i++) { std::cout<<"\n"<<valore[i]; } }; //altro... private: double valore[5]={0.0}; //altro... }; int main() { Prova prova; prova.getValore(); }
codice:// Example program #include <iostream> #include <string> class Prova { public: Prova():valore {33}{}; void getValore() { for(unsigned int i=0;i<5;i++) { std::cout<<"\n"<<valore[i]; } }; //altro... private: double valore[5]; //altro... }; int main() { Prova prova; prova.getValore(); }Se facciocodice:// Example program #include <iostream> #include <string> class Prova { public: Prova(){}; void getValore() { for(unsigned int i=0;i<5;i++) { std::cout<<"\n"<<valore[i]; } }; //altro... private: double valore[5]={33}; //altro... }; int main() { Prova prova; prova.getValore(); }
oppurecodice:// Example program #include <iostream> #include <string> class Prova { public: Prova():valore {33,2,5,6,7}{}; void getValore() { for(unsigned int i=0;i<5;i++) { std::cout<<"\n"<<valore[i]; } }; //altro... private: double valore[5]; //altro... }; int main() { Prova prova; prova.getValore(); }
Il tutto funziona correttamente.codice:// Example program #include <iostream> #include <string> class Prova { public: Prova(){}; void getValore() { for(unsigned int i=0;i<5;i++) { std::cout<<"\n"<<valore[i]; } }; //altro... private: double valore[5]={33,2,5,6,7}; //altro... }; int main() { Prova prova; prova.getValore(); }
Dove stà l'inghippo?
Uno dei dati membro è un array in quanto conosco il suo numero di elementi tramite un tipo enumerato (al posto di 5 c'è AltraClasse::NumeroElementiArray), che potrebbe cambiare valore: col ciclo for il tutto era gestito in automatico, se invece devo passargli la lista di tutti gli zero, la cosa non è più automatica...
A casa uso Code::Blocks e compilatore gcc se non ricordo male, può dipendere da questo?
Grazie ancora

Rispondi quotando