gpt4 book ai didi

c++ - 将指针数组传递给另一个类

转载 作者:行者123 更新时间:2023-11-30 03:11:05 25 4
gpt4 key购买 nike

我正在尝试执行以下操作:

在 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 数组中的第一项复制到新地址一样。

这有意义吗?有什么想法吗?

干杯,斯科特

最佳答案

如果你想传递整个数组,构造函数应该是这样的:

Graphics::Graphics(int width, int height, Ball *b, Paddle *p,
Block **blk, int number_of_blocks)

你应该像这样传递数组:

Graphics g(640, 480, &b, &p, blk, number_of_blocks);

关于c++ - 将指针数组传递给另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2586008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com