Comment puis-je retourner un tableau à partir d'une méthode et comment dois-je le déclarer ?
int[] test(void); // ??
Comment puis-je retourner un tableau à partir d'une méthode et comment dois-je le déclarer ?
int[] test(void); // ??
Eh bien, si vous souhaitez renvoyer votre tableau à partir d'une fonction, vous devez vous assurer que les valeurs ne sont pas stockées sur la pile car elles disparaîtront lorsque vous quitterez la fonction.
Donc, soit rendez votre tableau statique, soit allouez la mémoire (ou transmettez-la mais votre première tentative est avec un paramètre void). Pour ta méthode, je la définirais comme ceci :
int *gnabber(){
static int foo[] = {1,2,3}
return foo;
}
"comment puis-je retourner un tableau dans une méthode c++ et comment dois-je le déclarer ? int[] test(void); ??"
template <class X> class Array { X *m_data; int m_size; public: // there constructor, destructor, some methods int Get(X* &_null_pointer) { if(!_null_pointer) { _null_pointer = new X [m_size]; memcpy(_null_pointer, m_data, m_size * sizeof(X)); return m_size; } return 0; } };
juste pour int
class IntArray { int *m_data; int m_size; public: // there constructor, destructor, some methods int Get(int* &_null_pointer) { if(!_null_pointer) { _null_pointer = new int [m_size]; memcpy(_null_pointer, m_data, m_size * sizeof(int)); return m_size; } return 0; } };
Exemple
Array<float> array; float *n_data = NULL; int data_size; if(data_size = array.Get(n_data)) { // work with array } delete [] n_data;
exemple pour int
IntArray array; int *n_data = NULL; int data_size; if(data_size = array.Get(n_data)) { // work with array } delete [] n_data;
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.