hi, im writing a gui for my 2d engine(sdl powered) and hit snag, it apears that each time i add a form class to the vector the deconstructer of every item in the vector is called,

why is this? and more importantly is it my fault

this is the method that creates a new form, the name changes are just there so i could log which deconstructers are being called.

Code:
void PGUI::AddForm(std::string name, int x, int y, int width, int height){
	if(Forms.size()<Forms.max_size()){
		PGUI_Form newform(name,x,y,width,height);
		newform.name = parse("%s in vector",(char *)name.c_str());
		Forms.push_back(newform);
		newform.name = parse("%s not in vector",(char *)name.c_str());
	}
}
aplicable Log entries:

Initialising Window form1
PGUI_Form: Deinitialising form1 in vector
PGUI_Form: Deinitialising form1 not in vector
Initialising Window form2
PGUI_Form: Deinitialising form1 in vector
PGUI_Form: Deinitialising form2 in vector
PGUI_Form: Deinitialising form2 not in vector
Initialising Window form3
PGUI_Form: Deinitialising form1 in vector
PGUI_Form: Deinitialising form2 in vector
PGUI_Form: Deinitialising form3 in vector
PGUI_Form: Deinitialising form3 not in vector

Prophecy Engine: Shutting Down
PGUI_Form: Deinitialising form1 in vector
PGUI_Form: Deinitialising form2 in vector
PGUI_Form: Deinitialising form3 in vector

Any help would be apretiated,

thanks, p3p