Salut, je coince sur un exo de C++ Primer 5e édition:
Comme indique le titre il me faut déclarer une fonction qui renvoi une référence sur un tableau :
Alors, j'ai fait ceci :
Code :
- // avec le trailing return type
- auto rarr(const std::string& text, int i = 0) -> std::string(& )[10]
- {
- static std::string arry[10];
- for (;i<10;++i)
- arry = text + std::to_string(i);
- return arry; // Enfin même ici, je suis pas sûr a 100% de renvoyer une référence.
- }
|
Hors, il me faut le faire de 4 manière différentes :
- En utilisant le [i]trailing return type (réponse ci-dessus)
- En utilisant decltype
- En utilisant un alias ( typedef ou using )
- Et enfin sans utilisez aucune des manières listée ci-dessus.
PS: Ah j'oubliais, pas de STL ni template ne doit être utiliser.
[edit]
Code :
- // Avec le typedef
- typedef std::string tabT[10]; // Je préfère le typedef a using car ça active la coloration syntaxique dans mon ide :P
- tabT& rarr(const std::string& text, int i = 0);
|
Code :
- // Sans rien
- std::string (&rarr(const std::string& text, int i = 0))[10]
|
Code :
- //avec le decltype
- std::string arrT[10] // une variable global, c'est moche...
- decltype(arrT)& rarr(const std::string& text, int i = 0);
|
le main :
Code :
- int main(int argc, char **argv)
- {
- std::string tab[10] = rarr("test 1 ", 2);
- for (int i = 0; i < 10; ++i )
- std::cout << "tab[ " << i << " ] = " << tab[i] << std::endl;
- return 0;
- }
|
Du coup elles sont correct mes déclarations ?
Message édité par bqron le 19-09-2015 à 19:39:28
---------------
The success, is a progressive realization of a worthy ideal