2013-06-05 3 views
0

이것은 나를 미치게합니다.호환되지 않는 타입의 GLfloat에 할당하기

-(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에서 구현 : 나는 측면도에서 watter을 시뮬레이션하는 CCNODE 클래스의 구현에 다음 대입와 GLfloat로했다 업데이트 (그것은 내가 cocos2dForum에서 발견 클래스에서 제공) 계획. Box2D 라이브러리를 추가하기 전에 모두 제대로 작동했지만 물이 시뮬레이션되었지만 Box2D 라이브러리를 추가 한 후 Xcode에서 "호환되지 않는 유형의 void에서 GLfloat로 정렬"이라고 불평하기 시작했습니다 왜 이런 일이 발생합니까? 정말 희귀 한 ... 감사합니다. 카를로스.

+0

box2d -> 구현 파일을 .mm 확장자로 변경 했습니까? – LearnCocos2D

+0

예, 그랬습니다. 매우 이상합니다. – Caferlop

+0

더 많은 코드를 게시해야하며 (특히 GLFloat 유형 변수에 할당하는 경우) 오류가 발생한 행을 표시해야합니다. – LearnCocos2D

답변

1

_h1이 CGFloat * 또는 CGFloat [] 유형이라고 가정합니다. 포인터 유형이 아닌 경우 그 것이 하나의 문제입니다. 오류가 Box2D의 인해 오브젝티브 C 컴파일러와 다르게 행동 목표 - C++에 가능성이 높습니다 추가 한 후 발생하는

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

: 다른 것은은 calloc 무효가 * 그래서 당신은 반환 값을 캐스팅 할 필요가 반환하는 것입니다 분명히이 경우 암시 적 캐스트를 수행하지 않으므로 수동으로 캐스트를 추가해야합니다. 아마도 컴파일러는 이미 경고했지만, 이제는 오류로 간주됩니다 (따라서 조언 : 경고를 무시하지 마십시오!).

+0

GLFloat에 캐스팅하면 작동합니다. @ LearnCocos2D! 나는 투표 하겠지만, 나는 명성이 없다. 아직! – Caferlop

+0

prob는 없지만 대답은 – LearnCocos2D

+0

나에게 어리 석다. 그러나 대답을 어떻게 받아 들일 수 있습니까 ?? – Caferlop