2011-07-20 12 views
1

私は.mmファイルに次のコードを実行していると私はエラーを取得:無効な変換*エラー

Invalid conversion from 'const void*' to 'const __CFData*' 

私は.mmでコードを実行する必要があります。私が.mに変更すると、それは不平を言うことはありません。なぜそれはこのように振る舞うのですか?私はconst void*ためだけtypedefあるiPhone

CFSocketNativeHandle native; 
CFDataRef nativeProp = CFReadStreamCopyProperty(theReadStream, kCFStreamPropertySocketNativeHandle); 

if(nativeProp == NULL) 
{ 
    if (errPtr) *errPtr = [self getStreamError]; 
    return NO; 
} 

CFIndex nativePropLen = CFDataGetLength(nativeProp); 
CFIndex nativeLen = (CFIndex)sizeof(native); 

CFIndex len = MIN(nativePropLen, nativeLen); 

CFDataGetBytes(nativeProp, CFRangeMake(0, len), (UInt8 *)&native); 
CFRelease(nativeProp); 

CFSocketRef theSocket = CFSocketCreateWithNative(kCFAllocatorDefault, native, 0, NULL, NULL); 
if(theSocket == NULL) 
{ 
    if (errPtr) *errPtr = [self getSocketError]; 
    return NO; 
} 
+2

エラーが発生した行を指摘すると便利です。 –

答えて

5

CFReadStreamCopyProperty()戻りCFTypeRefにコンパイルし、C++はC(または客観-C)よりもコンバージョンに関する厳しいです。ここに明示的にキャストする必要があります:

CFDataRef nativeProp = (CFDataRef)CFReadStreamCopyProperty(...); 
+0

素晴らしい作品です!ありがとう! –

関連する問題