C++ correct way of wrapping array of subobjects for my new object?

131 views Asked by At
class myObject{
private:
subOBJ* subList;
int size

public:
myObject(subOBJ list[]);
}

For example, my object looks something like this and I want to create an object that will do something with an array of subOBJs passed in.

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

is it correct to design my constructor like so assuming the passed in array of subOBJs are valid.

1

There are 1 answers

0
Raildex On BEST ANSWER

In C++, you don't need to work with pointers in most cases. There are already classes that take care of that for you. Such as std::array<T> or std::vector<T>.

myObject(subOBJ list[]);

You need atleast one additional parameter: the length of/number of elements in the array.
in C++, passing arrays to functions doesn't pass the array, but the adress of the first element to it.
It is impossible to know the size within the function the array is passed to. Hence why you need to pass a second parameter length (number of elements) to it.

I recommend going for vector<subOBJ>(size is determined at runtime) or even array<subOBJ>(if size is known at compiletime).