Les déclarations suivantes doivent faire partie de l'espace de noms
sharing dans le fichier
ownership.hpp :
struct Album
{
std::string artist;
std::vector<std::string> songs;
};
Album
make_Album( /* ...parameters for artist and songs... */ );
Il s'agit d'une part de définir, dans le fichier
ownership.cpp, cette
fonction
make_Album() afin qu'elle renvoie une donnée de type
Album dans laquelle auront été
mémorisées les valeurs des
paramètres fournis.
Nous supposerons que ces informations peuvent être très volumineuses
donc sont
potentiellement coûteuses à recopier.
Il faut alors spécifier les types des paramètres et réaliser l'opération de
mémorisation en suivant les recommandations qui permettent d'éviter
les recopies superflues.
D'autre part, il faut réaliser, dans le fichier
prog_ex0201.cpp, cette
fonction :
void
test_make_Album()
{
std::cout << "\n~~~~ " << __func__ << "() ~~~~\n";
// ...
}
qui sera appelée depuis la fonction
main().
Elle doit utiliser la fonction
make_Album() pour initialiser
une variable de type
Album mémorisant un nom d'artiste et
une séquence de quelques titres de chansons de votre choix.
Cette mémorisation ne doit donner lieu à aucune recopie ;
les données mémorisées n'ont pas à être conservées dans leur éventuel
emplacement d'origine qui précède leur mémorisation dans la structure.
Des messages dans la console devront ensuite afficher lisiblement les
valeurs mémorisées dans chacun des membres de cette variable.