Вы, ребята, слишком усложнили это. Конечно, вы можете сделать это в C ++. Для него вполне нормально использовать обычный массив для эффективности. Вектор имеет смысл только в том случае, если он заранее не знает окончательный размер массива, т. Е. Он должен расти со временем.
Если вы знаете размер массива на один уровень выше в цепочке, шаблонный класс самый простой, потому что нет динамического выделения и нет шансов утечки памяти:
template < int ARRAY_LEN > // you can even set to a default value here of C++'11
class MyClass
{
int array[ARRAY_LEN]; // Don't need to alloc or dealloc in structure! Works like you imagine!
}
// Then you set the length of each object where you declare the object, e.g.
MyClass<1024> instance; // But only works for constant values, i.e. known to compiler
Если вы не можете знать длину в месте, где вы объявляете объект, или если вы хотите повторно использовать один и тот же объект с другой длиной, или вы должны принять неизвестную длину, то вам нужно выделить ее в конструкторе освободите его в своем деструкторе ... (и в теории всегда проверяйте, чтобы он работал ...)
class MyClass
{
int *array;
MyClass(int len) { array = calloc(sizeof(int), len); assert(array); }
~MyClass() { free(array); array = NULL; } // DON'T FORGET TO FREE UP SPACE!
}