C ++函数调用带类型指针,参数混乱:不允许不完整类型

时间:2013-02-04 01:22:15

标签: c++ pointers typedef dynamic-arrays

我正试图围绕C ++。我只是给你一些小块来帮助说明这个想法而不会让事情变得复杂。顺便说一句,即时通讯只实现这些方法,我无法改变设置或参数。

我有一个动态数组数据结构类,它包含名为stocks的对象:

typedef class Stock ArrayType;

class DynamicArray {
    ArrayType** items;
    int numberOfElements;
    ...
}

这是它的构造函数。我应该分配数组并添加一个项目,然后设置元素数量。

DynamicArray::DynamicArray(ArrayType* const item){
    Stock *items = NULL; // ... i guess? pointers to pointers confuse me
    // now im guessing i need to create a actual stock array and point the above pointer to it
    items = new Stock[1]; // ERROR: incomplete type is not allowed? I've tried several things, and cant get rid of the red squiggles
    this->numberOfElements = 1;
}

1 个答案:

答案 0 :(得分:1)

好的,有一些问题。蝙蝠,你必须首先包括股票。编译器在编译Stock之前需要DynamicArray的完整定义,因为我的猜测是内存分配。

其次,您希望items 成员值包含对构造函数中创建的数组的引用。因此,不是在构造函数中定义Stock *items[1],而是将new语句的值直接赋给this->items;你可以省略this->,只要你没有在你正在使用的任何函数中定义一个具有相同名称的变量。

最后,您正在分配指针数组,因此您使用以下语法:new ArrayType*[1]

此外,就像编码实践一样,你不应该在同一个源中混合使用typedef和它们的原始类型。因此,我建议您始终使用ArrayType或根本不使用。