Я пытаюсь сделать следующее:
в main.cpp:
// Create an array of pointers to Block objects
Block *blk[64];
for (i=0; i<8; i++) {
for (j=0; j<8; j++) {
int x_low = i*80;
int y_low = j*45;
blk[j*8+i] = new Block(30, x_low+40.0f, y_low+7.5f, &b);
}
}
И затем я пытаюсь передать его в созданный мной графический объект:
Graphics g(640, 480, &b, &p, blk[0], number_of_blocks);
графический конструктор выглядит следующим образом:
Graphics::Graphics(int width, int height, Ball *b, Paddle *p, Block *blk, int number_of_blocks) {
Если я посмотрю, что содержится в массиве из графического объекта, существует только первый элемент, а затем все остальные элементы находятся в гиперпространстве:
for (int i=0; i<64; i++) {
printf("for block %d, %f, %f ", i, (_blk+(sizeof(_blk)*i))->_x_low, (_blk+(sizeof(_blk)*i))->_y_low);
printf("blah %d\n", (_blk+(sizeof(_blk)*i)));
}
и если я посмотрю на адреса, они будут разными (6956552, а не 2280520, когда я проверяю адреса в основном классе, используя:
printf(" blah %d\n", &blk[j*8*i]);
Я уверен, чтодолжно быть что-то не так, я делаю что-то не так, как будто я скопировал первый элемент из массива blk на новый адрес при передаче в графический объект.
Имеет ли это смысл? Есть идеи?
Ура, Скотт