I just edited my last post, a few seconds before you posted.
There I gave a solution of how item could be made independent. I was just thinking, a more elegant way to deal with the items is to remove the global array of items and let both room and character have items.
If a character wants to have an item in a room, then it could first ask the room which items it has available and then take some of the items. You add the items as a vector in your classes. When character calls the interface getItem of room, this vector should get smaller and the element should be added to the vector of character.
This means that in character.h and room.h you have to include item.h, because character and room have items. Also in character.h you have to include room.h, since character will be using room.