2

我想创建一个NSObject包含一些成员变量的子类:

@interface PointMass : NSObject
{
    CGPoint mCurPosition;
    CGPoint mLastPosition;
    CGPoint mAcceleration;
}

-(id) initWithPosition:(CGPoint*) pos;


#import "PointMass.h"

@implementation PointMass

-(id) initWithPosition:(CGPoint*)pos
{
    mCurPosition = *pos;
    mLastPosition = *pos;
    mAcceleration = ccp(0,0);
    return self;
}

@end

我想创建一个 C 风格的数组来在 cocos2d 类中保存一堆它们:

// mNumPoint declared in interface, I've set it to 100
PointMass *pointMassList;
pointMassList = malloc(sizeof(PointMass*) * mNumPointMass);

for (int = 0; i < mNumPointMass; i++)
{
    CGPoint point = ccp(100,100);
    PointMass *p = [[PointMass alloc] initWithPosition: &point];
    pointMassList[i] = p;
}

但我得到一个错误

Expected method to write array element not found on object of type 'PointMass *'

如果我想将指向它的指针存储在 C 数组中,是否需要告诉编译器更多关于我的 PointMass 对象的信息?

我基本上是想在 iPhone 上玩一些粒子数学,而不需要不断地从 NSArray 中解包点,如果不清楚我想在这里实现什么。

如果我以一种倒退的方式处理这个问题,我很想得到纠正——我已经有一段时间没有写 vanilla C 了,而且我有点生疏了!

4

1 回答 1

5

自从我写香草 C 以来已经有一段时间了

您仍然应该能够区分指向指针T和指向指针的指针TTPointMass这种情况下)。你想存储一个数组PointMass *,而不是一个数组PointMass(无论如何你都做不到)。所以将声明更改pointMassList

PointMass **pointMassList;

它会起作用。但是,如果您仍然使用 Objective-C,为什么不简单地将实例存储到NSArray?

于 2013-03-27T19:28:09.403 回答