Как преобразовать эти строки кода C в C ++ - PullRequest
1 голос
/ 11 февраля 2010

Я пытаюсь импортировать некоторый код c в мою программу на c ++. Есть три строки, которые не импортируются напрямую:

Первый:

free(t);

Второй:

new_node = (Tree *) malloc (sizeof (Tree));

Третий:

Tree * delete(int value, Tree * t)

Как их можно изменить для работы в C ++?

Ответы [ 3 ]

5 голосов
/ 11 февраля 2010

Вы можете использовать free и malloc в C ++. Нужно ли это делать - это отдельная история, но если вы переносите библиотеку C, ответом будет «да» (по крайней мере, на данный момент).

delete - это ключевое слово в C ++, вам нужно будет переименовать эту функцию.

4 голосов
/ 11 февраля 2010

Если вы хотите преобразовать его в стиль C ++ new / delete (см. Другие ответы о продолжении использования malloc / free):

// 1. free(t);
delete t;

// 2. new_node = (Tree *) malloc (sizeof (Tree));
new_node = new Tree;

// 3. Tree * delete(int value, Tree * t)
Tree * delete_tree(int value, Tree* t)

Примечание: для # 3 вам необходимо изменить всех пользователей delete(value, t) на delete_tree(value, t).

2 голосов
/ 11 февраля 2010

Первые две строки должны быть верны C ++, предполагая, что вы включили stdlib.h и определили Tree как класс / struct / type где-то.

Третья строка должна быть изменена, так как «delete» является ключевым словом в C ++ и не может использоваться в качестве имени функции. Попробуйте выполнить глобальную замену в коде C и изменить все экземпляры delete на delete_from_tree или что-то в этом роде.

...