对象数组C ++(Embarcadero)的问题

时间:2015-08-27 14:28:49

标签: c++ arrays

我有一个带结构的元素类,我想在数组中放置一些对象。我的班级:

class element
{
public:
//properties
AnsiString ON;          //order nummer
AnsiString MO;          //order merk
AnsiString SN;          //element nummer
AnsiString RS;          //element afwerking
AnsiString OW;          //wapeningspatroon
AnsiString CN;          //element calculation number
int el_length;          //element lengte
int el_width;           //element hoogte
int el_beginX;          //element beginpunt
int el_concrete_height; //element hoogte beton
int el_iso_height;      //element isolatie hoogte
int el_weight;          //element gewicht

//struct om objecten aan te maken
struct element(AnsiString a_ON, AnsiString a_MO, AnsiString a_SN, AnsiString a_RS, AnsiString a_OW, AnsiString a_CN,
int a_elLength, int a_elWidth, int a_elBeginX, int a_elConcreteHeight, int a_elIsoHeight)
{
    ON = a_ON;
    MO = a_MO;
    SN = a_SN;
    RS = a_RS;
    OW = a_OW;
    CN = a_CN;
    el_length = a_elLength;
    el_width = a_elWidth;
    el_beginX = a_elBeginX;
    el_concrete_height = a_elConcreteHeight;
    el_iso_height = a_elIsoHeight;
};

无论如何这个班级没有问题。

我有另一个头文件:

DynamicArray<element> ElementArray;

element ElementObject("", "", "", "", "", "", 0, 0, 0, 0, 0,); // just example
ElementArray.set_length(10);
ElementArray[0] = ElementObject;

这是我的错误: [bcc32Error] sysdyn.h(689):问题:E2285无法找到&#39; element :: element()&#39;

的匹配项

所以我的问题是如何解决这个问题呢?

2 个答案:

答案 0 :(得分:2)

当你set_length的{​​{1}}时,它会使用默认构造函数创建的对象填充数组。要做到这一点,DynamicArray需要提供一个:

element

答案 1 :(得分:1)

错误表明您的element类没有默认构造函数,尽管请求了一个。最有可能的是,DynamicArray模板需要包含的元素类型以使默认构造函数能够分配对象,例如在致电set_length(10)时。

要解决此问题,只需在您的班级中添加默认构造函数(即element(){...}),即可修复错误。