gpt4 book ai didi

C++ 初始化静态数组

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:01 26 4
gpt4 key购买 nike

我不确定这是否可能。从我看到的所有示例来看,数组是在 { } 括号内定义的,但在我的例子中这不太可能。

我想做的是将其保留在我的绘图函数中,以绘制多个逐渐增大大小的圆圈。

我通过使用调试器得到的是每次循环命中时都会重置静态数组。

我也尝试过类似static Rect rc[5] = {}

void fun_called_every_five_seconds() {
static Rect rc[5];

for (int i = 0; i < count; i++) {
int x = rand()%400;
int y = rand()%400;
int r = rand()%200;
rc[i] = Rect (x,y,r,r);
}

rc[0].X += 50;


// I check value of rc[0].X right here
}

最佳答案

您可以拆分代码并将数组初始化放在别处:

auto make_rect_array() {
std::array<Rect, 5> rc;

for (int i = 0; i < count; i++) {
int x = rand()%400; // you may want better random
int y = rand()%400;
int r = rand()%200;

rc[i] = Rect (x,y,r,r);
}

return rc;
}

然后,只需在您的函数中调用它:

void fun_called_every_five_seconds() {
static auto rc = make_rect_array();

rc[0].X += 50;
// I check value of rc[0].X right here
}

这样,您就不会在代码中引入额外的分支,它看起来更简洁并且线程安全。

关于C++ 初始化静态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42069909/

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