C ++ Builder如何用vector构建动态对象?

时间:2016-01-11 18:37:11

标签: c++ arrays image dynamic vector

我正在C ++ Builder中开发IOS应用程序。我的问题是如何在for循环中构建TImages。我公开宣布了这个载体:

#include <vector>

std::vector<TImage*> Image(c); // public declaration 

void __fastcall TForm1::Button2Click(TObject *Sender)
{
 for (int i = 0; i < c ; i++){

    c = 5 // c should be send to te array
    Image[i] = new TImage(this); // I tried it this way but when i click the button i get an acess violence error
    Image[i]->Parent = BoardItem ;
    Image[i]->Height = 20 ; 
    Image[i]->Width = 20 ; 
   }
}

那么如何使用矢量在for循环中创建图像?

Dynamic alocation an array of Images in C++ Builder我查找了该问题的最后一个答案,但没有描述如何在循环中完成。

1 个答案:

答案 0 :(得分:2)

  

// c should be send to te array

如果更改变量c值,则不会更改数组的大小。

您必须在resize()向量上调用Image来更改大小,但它并不适合。更好地写点像

void TForm1::ClearImage() {
 for (int i = 0; i < Image.size(); ++i) {
     delete Image[i];
 }
 Image.clear();
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
 ClearImage();
 c=5;
 for (int i = 0; i < c ; i++){

    Image.push_back(new TImage(this));
    Image.back()->Parent = BoardItem ;
    Image.back()->Height = 20 ; 
    Image.back()->Width = 20 ; 
   }
}