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*到其他指针类型的隐式转换,因此您必须显式转换。不仅使用 Objective-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 回答