2012-03-18 7 views
0

et si je veux passer un tableau par ref? Un tableau est un pointeur vers son premier élément, et je veux passer le 'tableau entier' par ref. Si je définisC++ - passer tableau par ref

void someFunction(double& adouble){...} 

alors adouble est un ref à un double, pas un tableau avec doubles.

Si je définis

void anotherFunction(double* adouble){...} 

alors mon argument est un pointeur vers un double ou un tableau, mais il est pas passé par référence, non?

Merci et salutations

+3

Un tableau n'est pas un pointeur vers son premier élément. Un tableau est un tableau. Un pointeur est un pointeur. Et si vous voulez faire circuler des tableaux, vous voudrez certainement utiliser 'std :: vector' à la place – jalf

+4

Un commentaire ne suffit pas: ** UN ARRANGEMENT N'EST PAS UN POINTEUR **. Obtenez cette notion incorrecte de votre tête avant que cela ne vous cause plus de problèmes. – Mankarse

Répondre

4

Pour une taille spécifique:

void foo(double (&array)[100]); 

Pour toute taille:

template <size_t N> 
void foo(double (&array)[N]); 
2

Pourquoi ne pas:

void foo(double *& bar) 
+1

Cela passe un pointeur par référence, ce qui est pratiquement inutile si vous voulez un tableau. –

0

Une autre possibilité est d'utiliser un struct comme un wrapper à p Ass le tableau, cela peut le rendre plus pratique dans certains cas. Un exemple:

const int N = 100; 

struct ArrayWrapper 
{ 
    double adouble[N]; 
}; 

void foo(ArrayWrapper& wrapper) 
{ 
    // ... 
}