C++ 为我的新对象包装子对象数组的正确方法?
C++ correct way of wrapping array of subobjects for my new object?
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
数组有效,这样设计我的构造函数是否正确。
在 C++ 中,大多数情况下您不需要使用指针。已经有 类 为您处理。如std::array<T>
或std::vector<T>
.
myObject(subOBJ list[]);
您至少需要一个附加参数:数组中元素的长度of/number。
在 C++ 中,将数组传递给函数并不会传递数组,而是传递第一个元素的地址。
不可能知道数组传递给的函数内的大小。因此,为什么需要将第二个参数长度(元素数)传递给它。
我建议使用 vector<subOBJ>
(大小在运行时确定)甚至 array<subOBJ>
(如果大小在编译时已知)。
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
数组有效,这样设计我的构造函数是否正确。
在 C++ 中,大多数情况下您不需要使用指针。已经有 类 为您处理。如std::array<T>
或std::vector<T>
.
myObject(subOBJ list[]);
您至少需要一个附加参数:数组中元素的长度of/number。
在 C++ 中,将数组传递给函数并不会传递数组,而是传递第一个元素的地址。
不可能知道数组传递给的函数内的大小。因此,为什么需要将第二个参数长度(元素数)传递给它。
我建议使用 vector<subOBJ>
(大小在运行时确定)甚至 array<subOBJ>
(如果大小在编译时已知)。