2009-05-04 5 views
1

したがって、実装を.mとしてプログラムを実行すると、正常に動作します。ただ、このエラーをスローする...原因にObjective-C++を使用している場合のXcode '無効な変換'

CGContextRef myContext = [[NSGraphicsContext currentContext] graphicsPort]; 

をこの行を.mmするためにそれを変更...

error: invalid conversion from 'void*' to 'CGContext*' 

誰でもちょうどそれを変更すると、それは爆破するだろうか、それを修正する方法をなぜ任意のアイデアがありますか?

答えて

2

C++では、陰的型キャストをvoid*から実行できません。この場合、void*(戻りタイプは-[NSGraphicsContext graphicsPort])から暗黙の変換CGContextRefは不正です。あなたは、このような変換を明示的に行うことができます:

CGContextRef myContext = static_cast<CGContextRef>([[NSGraphicsContext currentContext] graphicsPort]); 

はC++ static_castオペレータの議論のためthis SO質問を参照してください。

1

Cではvoid *を任意の型に変換できますが、C++では変換できません。 ファイルは、それがC++としてコンパイルされ.mmしたら:適切な型にキャスト

cristi:tmp diciu$ cat test.c 
int main() 
{ 
    char * t = "test"; 
    void * m = t; 
    char * g; 

    g=m; 

} 

cristi:tmp diciu$ g++ test.c 
test.c: In function ‘int main()’: 
test.c:7: error: invalid conversion from ‘void*’ to ‘char*’ 

cristi:tmp diciu$ gcc test.c 

修正するには、すなわち、明示的に「CGContext *」を「*ボイド」キャスト。

関連する問題