Here's some pseduo C++ to get you started. I didn't provide any public members - just structures with relationships to get you started.
As for the issue of "a space can belong in more than one building". That's an exercise, I'll leave up to you.
class Building;
class Space;
class Floor;
class Building
{
int number_of_floors;
vector<Floor*> _floors; // list of floors in the building
// building specific data
string name;
string address;
};
class Floor
{
Building* pBuilding; // building for which this floor belongs
int floor_number; // the floor number (e.g 1-99)
vector<Space*>; // list of spaces on this floor
};
class Space
{
public:
enum SpaceType
{
Apartment,
Store,
Office
};
private:
SpaceType _spacetype;
Floor* pFloor; // floor in which this space exists on
};