0

これは私を怒らせています。サイドビューでワットをシミュレートするCCNODEクラスの実装で、次の割り当てでGLfloatする必要がありました(cocos2dForumで見つけたクラスからのものです)更新:

-(id)initWithBounds:(CGRect)bounds count:(int)count damping:(float)damping diffusion:(float)diffusion;
{

    if((self = [super init])){
        _bounds = bounds;
        _count = count;
        _damping = damping;
        _diffusion = diffusion;

        _color = ccc4f(1.0f, 1.0f, 1.0f, 1.0f);

        _h1 = calloc(_count, sizeof(float));//Here 
        _h2 = calloc(_count, sizeof(float));// And here, is where I get the error.




        WaterTexture = [[CCTextureCache sharedTextureCache] addImage:@"watter.png"];
        //shader_ = [[CCShaderCache sharedShaderCache] programForKey:kCCShader_Position_uColor];
        shader_ = [[CCShaderCache sharedShaderCache] programForKey:kCCShader_PositionTexture];
        _textureLocation = glGetUniformLocation(shader_->_program, "u_texture");
        texturesize= 256*CC_CONTENT_SCALE_FACTOR();
        offset=0;

    }

    return self;
}

- (void)dealloc
{
free(_h1);
free(_h2);

[super dealloc];
}

このクラスは Cocos3d プロジェクトに実装されています。Box2d ライブラリを追加する前は、すべて正常に機能していましたが、水はシミュレートされていましたが、Box2D ライブラリを追加した後、XCode は「互換性のない型 void から GLfloat に割り当てています」と不平を言い始めます。本当に珍しいです... よろしく。カルロス。

4

1 に答える 1

1

_h1 は CGFloat* または CGFloat[] 型であると仮定します-それがポインター型でない場合、それは1つの問題です。もう 1 つは、calloc が void* を返すため、その戻り値をキャストする必要があることです。

_h1 = (CGFloat*)calloc(..);

Box2D を追加した後にエラーが発生するのは、Objective-C++ の動作が Objective-C コンパイラとは異なるためである可能性が高く、この場合は暗黙のキャストを実行しないため、手動でキャストを追加する必要があります。おそらく、コンパイラはすでに警告を発していましたが、現在はエラーと見なされています (したがって、警告を無視しないでください!)。

于 2013-06-06T08:58:59.040 に答える