stackoverflow会员好吗?
类中的结构声明

struct PointSprite
{
    GLfloat x;
    GLfloat y;
    GLfloat size;
    Color4f color;
} ParticleSystems[MAXIMUM_PARTICLES_ON_SCREEN];
// I generally put some stuffs in ParticleSystem array.
// for ex) struct PointSprite *ps = &ParticleSystems[index];
// and it works well on the class A, but I want to get class B to access this array.

我的问题是,如何返回particleSystems数组,以便其他类可以访问它?我尝试了下面的代码来返回指针,但是编译器给了我一个警告。
- (struct ParticleSystems *) commitParticles
{
    struct ParticleSystems *ptr = &ParticleSystems; // it said, assigning incompatible pointer type

    return ptr;
}

还是需要分配“ParticleSystems”数组?请帮忙!谢谢

最佳答案

如果要在函数内部创建数组,则应使用new动态分配它,然后返回指向它的指针。
不能从函数返回数组,必须返回指向函数的指针。
示例代码:

ParticleSystems* doSomethingInteresting()
{
    ParticleSystems *ptr = new ParticleSystems[MAXIMUM_PARTICLES_ON_SCREEN];

    //do the processing

    return ptr;

}

调用者取得返回的动态分配数组的所有权,并需要解除分配以避免内存泄漏:
delete []ptr;

关于objective-c - 返回C结构数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6959507/

10-11 05:16