2010-02-11 70 views
1

我试图将一些c代码导入到我的C++程序中。有三条线不直接导入:如何将c代码的这些行转换为C++

第一:

free(t); 

第二:

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

第三:

Tree * delete(int value, Tree * t) 

如何能够将这些改变在C++中工作?

+1

错误信息真的很棒。否则,我们都只是猜测。 一个注意事项是delete是C++中的一个关键字 – rerun 2010-02-11 05:00:24

回答

2

前两行应该是有效的C++,假设你已经包含了stdlib.h,并且已经将Tree定义为类/结构/类型。

第三行将需要更改,因为'delete'是C++中的关键字,不能用作函数名称。尝试在C代码中进行全局替换,并使用'delete_from_tree'或类似的东西来更改'delete'的所有实例。

5

您可以在C++中使用free和malloc。无论你应该是一个不同的故事,但如果你正在移植一个C库,那么答案是肯定的(至少现在是这样)。

delete是C++中的关键字,您将需要重命名该函数。

4

假设你想将其转换为C++风格新/删除(查看关于继续使用malloc /免费其他答案):

// 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)