Мне нужно иметь несколько экземпляров класса. Каждый экземпляр должен содержать массив предварительно определенного размера. Размеры массивов постоянны и доступны во время компиляции, поэтому я хочу распределить их статически.
Мне нужно собрать экземпляры в один «объект-массив», чтобы я мог получить к ним доступ, используя итератор,Мои проблемы:
- Статическое распределение с использованием аргумента конструктора не работает.
- Создание объектов в цикле не работает.
Вот пример кода того, что я хочу сделать:
//Class definition of buffer
class mybuffertype{
public:
mybuffertype(int size);
int bufsize;
float *buffer;
};
//Constructor of buffer
mybuffertype::mybuffertype(int size){
bufsize=size;
buffer=new float[bufsize]; //Dynamic allocation
//float buffer[bufsize]; //This static allocation doesn't work
}
//Class definition of container
class container{
public:
container();
static const int n_buffers=3;
const int n_sizes[n_buffers]={4,5,6};
mybuffertype mybuffers[n_buffers];
};
//Constructor of container
container::container(void){
int i;
for(i=0;i<n_buffers;i++){
mybuffertype mybuffers[i]= mybuffertype(n_sizes[i]);
}
}
//Main
int main(void){
container obj;
int i;
for(i=0;i<obj.n_buffers;i++){
printf("Size: %d \t 1st element: %f\n",
obj.mybuffers[i].size,
obj.mybuffers[i].buffer[0]);
}
}
Что лучшеспособ сделать это?