Bonjour,
Je voudrais définir dans mon fichier .h, une fonction qui retourne un tableau.
Comment faire ?
Dans mon .h
Dans mon .ccpCode:Objet1[] maFonction();
Code:
2
3
4
5
6
Version imprimable
Bonjour,
Je voudrais définir dans mon fichier .h, une fonction qui retourne un tableau.
Comment faire ?
Dans mon .h
Dans mon .ccpCode:Objet1[] maFonction();
Code:
2
3
4
5
6
Il faut retourner un pointeur sur le debut du tableau
Code:
2
3
4
5
6
ou passer par un joli std::vector.
Ou beaucoup mieux, renvoyer un vecteur:
La meilleure solution reste quand-même de passer le tableau par référence en paramètre e la fonction. Les 2 principaux problème lorsqu'on renvoie un tableau sont:Code:
2
3
4
5
6
1/ Perte de performance (il y a recopie "inutile" du tableau)
2/ Gestion de la durée de vie du tableau (mémoire alloué à ce tableau) plus compliquée.
Justement j'avais un vector au lieu du tableau.
Mais mon .h est du C et non C++ donc je ne peux pas user du vector !
Si vous arrivez à me faire utiliser un pointeur de vector dans mon .h ?
Qur ton post dans la section C++ alors ?Citation:
Mais mon .h est du C et non C++ donc je ne peux pas user du vector !
Allez, zou en C !
Oula... tu mélanges les deux... est ce bien raisonnable? :roll:
Allocation dynamique :
Code:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Le code avec le define va dans le .h, ainsi que la déclaration des fonctions.
Leur définition va dans un code source .cpp qui inclut le .h.
Salut,
Tu mets la partie verte dans le fichier .h ;)
Quant à ce que fait le code:
- #ifndef EXTERN_C : s'il n'existe pas un symbole préprocesseur nommé EXTERN_C
- #ifdef __cplusplus : si le symbole préprocesseur __cplusplus est présent (signifie donc : si le complateur travaille en C++)
- #define EXTERN_C extern "C" :défini le symbole préprocesseur EXTERN_C de manière à ce qu'il soit remplacé par le terme extern "C" (qui permet au compilateur C++ que ce qui suit est ... du C et non du C++)
- #else : sinon (comprend: si __cplusplus n'est pas présent, et donc que l'on ne travaille pas avec un compilateur C)
- #define EXTERN_C extern :défini le symbole préprocesseur EXTERN_C de manière à ce qu'il soit remplacé par le terme extern (qui permet d'indiquer que ce qui suit se trouve "ailleurs" ;))
- #endif : fin du ifdef __cplusplus
- #endif : fin du ifndef EXTERN_C
de cette manières, si tu travailles avec un compilateur C++, le code sera transformé (merci le préprocesseur :awe: ;)) en
et le compilateur saura donc qu'il doit appliquer les conventions "C"Code:
2
3
4
5
6
7
8
9
10
11
Par contre, si tu travailles avec un compilateur C, le code sera transformé par le préprocesseur en
et le compilateur sera très content :DCode:
2
3
4
5
6
7
8
9
10
11
En fait, cette partie est surtout utile pour les déclarations de fonction, dans le fichier .h :
Code:
2
3
4
5
6
7
8
9
10
11
12
Code:
2
3
4
5
6
7
8
9
10
11
12
13
14