0

我正在尝试围绕 C++ 进行思考。我将只给你一些小片段来帮助说明这个想法,而不会让事情变得复杂。顺便说一句,我只实现这些方法,我无法更改设置或参数。

我有一个用于动态数组数据结构的类,它包含称为股票的对象:

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;
}
4

1 回答 1

1

好的,有几个问题。马上,您必须首先包含 Stock。Stock编译器在编译之前需要完整的定义DynamicArray,因为我猜是内存分配。

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

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

此外,正如编码实践要点一样,您不应在同一源中混合使用 typedef 及其原始类型。因此,我建议您ArrayType始终使用或根本不使用。

于 2013-02-04T02:03:28.257 回答