1
class myObject{
private:
subOBJ* subList;
int size

public:
myObject(subOBJ list[]);
}

例如,我的对象看起来像这样,我想创建一个对象,该对象将使用subOBJs传入的数组执行某些操作。

myObject::myObject(subOBJ list[])
{
    size = sizeof(list);
    subList = new subOBJ[size];
    for(int i=0; i< size; i++){
        subList[i] = list[i];
    }
}

假设传入的数组有效,那么设计我的构造函数subOBJs是否正确。

4

1 回答 1

1

在 C++ 中,大多数情况下不需要使用指针。已经有一些课程可以为您解决这个问题。比如std::array<T>std::vector<T>

myObject(subOBJ list[]);

您至少需要一个附加参数:数组中元素的长度/数量。
在 C++ 中,将数组传递给函数不会传递数组,而是传递第一个元素的地址。
不可能知道数组传递到的函数中的大小。因此,为什么您需要将第二个参数长度(元素数)传递给它。

我建议使用vector<subOBJ>(大小在运行时确定)甚至array<subOBJ>(如果大小在编译时已知)。

于 2020-09-25T06:51:05.580 回答