Le code que vous avez écrit n'est pas valide C++. Si vous voulez dire:
class Room{
~Room();
virtual int cost() =0;
};
alors oui, la classe est abstraite. Vous ne pouvez alors créer une carte comme celle-ci:
map <int, Room> rooms;
mais vous pouvez comme ceci:
map <int, Room *> rooms;
Ensuite, en supposant que vous avez une singleroom de classe qui est dérivée de la chambre et met en œuvre le coût(), vous pouvez dire :
rooms.insert(make_pair(101, new SingleRoom));
Notez également que les classes abstraites doivent avoir des destructeurs virtuels.
Vous ne manquez pas un 'virtual' devant' int cost() = 0; 'Neil? – fredoverflow
@Fred Oui - merci. –