well firstly i thought if you are drawing a quad for each building, glEnd() should be placed after the four vertices ideally, or after the foor loop.
One thing I dont get is
//draw 6 buildings :D
for(int i = 0; i < 6; i++)
{
b[i].drawBuildings();
}
where in the drawBuilding member function, you are drawing 6 buildings. If you have instantiated 6 buildings, and for each of them buildings class you are drawing another 6 buildings, you now got 36 buildings. Is this intentional ? Your naming of objects is very confusing to me

and I dare say if you are getting problems, you maybe confused with whats goin on yourself.