Хорошо, я пытаюсь интегрировать некоторый код C в проект C ++ и столкнулся с несколькими проблемами.Я подробно опишу первый здесь.
Я продолжаю сталкиваться с этой ошибкой:
ошибка: невозможно преобразовать 'char *' в 'char **' в назначении |
Вот неправильный код (с отмеченной точкой останова):
char** space_getFactionPlanet( int *nplanets, int *factions, int nfactions )
{
int i,j,k;
Planet* planet;
char **tmp;
int ntmp;
int mtmp;
ntmp = 0;
mtmp = CHUNK_SIZE;
tmp = malloc(sizeof(char*) * mtmp); <--- Breakpt
Функция malloc является производной от заголовка C.Вот объявление:
_CRTIMP void* __cdecl __MINGW_NOTHROW malloc (size_t) __MINGW_ATTRIB_MALLOC;
Я использую кодовые блоки, которые настроены на использование MinGW.Приведенный выше синтаксис совершенно чужд для меня.
Я полностью озадачен, поскольку этот код отлично работает в программе на C, из которой я его взял.
Любые идеи?
РЕДАКТИРОВАТЬ1:
Упс, только что понял, что объявление от stdlib.h.
РЕДАКТИРОВАТЬ 2:
Я пытался:
tmp = static_cast<char **>(malloc(sizeof(char*) * mtmp));
Как и предлагалось, но не получаю ошибку: неверный static_cast из типа 'char *' в тип 'char **'.
EDIT 3:
Хорошо, reinterpret_cast работает, но кажется, что решение заменить mallocгораздо более элегантно просто, так что я пойду с этим.
Однако в конце функции нет свободного (tmp).Является ли это проблемой, если я не вставил удаление tmp []?
РЕДАКТИРОВАТЬ 4: я должен добавить, что функция tmp возвращается функцией, поэтому необходимо удалить tmp илиэто автоматически?
Хорошо, я отмечаю, что это решено.Спасибо за вашу помощь.