1 2 3 4 5 6 7 8 9 10 11 12 13 14
| int main(){
/* une collection de messages, dont on ignore tout */
std::vector<std::unique_ptr<Message>> messages;
/* on y ajoute des salutations */
messages.push_back(std::move(std::make_unique<Greatings>()));
/* et des au revoirs */
messages.push_back(std::move(std::make_unique<GoodBye>()));
/* une fois placés dans la collections, il sont tous connus comme "des messages",
* si j'avais fait créer les deux messages "ailleurs", tu n'auras pas connu leur type réel
*/
for(auto const & it : messages){ // on parcourt tous les messages, sans savoir ce qu'ils sont en réalité
it.get()->printMe(); // mais eux, ils le savent très bien
}
} |