0

Objective-Cプロジェクトで使用したいC++クラスがあります。#includeがC++ヘッダーなしで、Obj-Cファイルの名前を「.m」から「.mm」に変更してコンパイラーを切り替えると、コンパイラーは大量のmallocエラーを生成します。

double * pointValues = malloc(sizeof(double *)*numOfPts);

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

突然、mallocのすべての行が無効になります。Obj-C ++コンパイラを使用する場合、「malloc」を型キャストする必要がありますか、それとも他の問題の兆候ですか?

4

2 に答える 2

3

C ++では、void*から他のポインター型への暗黙の変換がないため、明示的にキャストする必要があります。目的だけでなく-C++コンパイラ。

于 2012-05-28T23:23:01.717 に答える
0

C++には強い型付けがあります。C++では直接変換は許可されていません。

double * pointValues = (double*) malloc(sizeof(double *)*numOfPts);
//                        |
//                  explicit cast
于 2012-05-28T23:24:42.093 に答える