我向矢量添加了幾個元素,但是當我訪問它們時,它們都是最後添加的元素。我無法理解。C++中的矢量只能讀取最後一個元素
這裏是我的代碼:
while(true){
cin>>shape;
if(shape=='X') break;
if(shape=='C'){
cin>>x>>y>>r;
Circle c(x,y,r);
shapes[sum] = &c;
//cout<<shapes[sum]->getArea()<<endl;
sum++;
}else if(shape=='R'){
cin>>x1>>y1>>x2>>y2;
Rectangle rec(x1,y1,x2,y2);
shapes[sum] = &rec;
//cout<<shapes[sum]->getArea()<<endl;
sum++;
} else if(shape=='T'){
cin>>x1>>y1>>x2>>y2>>x3>>y3;
Triangle tr(x1,y1,x2,y2,x3,y3);
shapes[sum] = &tr;
//cout<<shapes[sum]->getArea()<<endl;
sum++;
}
}
for(int j=0; j<sum; j++){
showArea(shapes[j]);
}
我發現,在最後,在矢量的所有元素是一樣的,它們是在最後添加的元素。
後的[MCVE]請,如果你想有一個簡潔的答案,而不是猜測。 –
我懷疑你的矢量存儲指針。而且,您存儲局部變量的指針=> UB – Garf365
此外,除非矢量的大小從一開始就設置,否則'shapes [']可能超出範圍。另一個未定義行爲的案例。 –