2014-06-18 50 views
-6

我有这样的结构:转换malloc的新的C++结构

struct problem 
{ 
int length; 
struct node **x; 
};  

,我创造了这个结构的这样一个结构:

struct problem prob; 

我可以在C这样做:

prob.x = Malloc(struct node *,prob.length); 

但我怎么能用c + +风格与new?为什么?

+0

向我们展示失败的代码。 – Erbureth

+0

是'Malloc'你自己的功能吗? 'malloc'只能用于一个参数 – mch

+0

'prob.x = new node * [prob.length]'? – 101010

回答

0

好吧,这段代码可能会奏效,请注意您不再持有指针的指针,但一个简单的阵列 - 这可能会或可能不适合你正在尝试做的工作:

typedef struct tagnode 
{ 
    ... 
} node; 

typedef struct tagproblem 
{ 
int length; 
node *x; 

tagproblem(int len) : length(len) 
{ 
    x = new node[length]; 
} 
~tagproblem() 
{ 
    delete [] x; 
} 
} problem; 

//Now create... 
problem = new problem(2); 
2

在C++中,可以通过这个来实现。

std::vector<node *> problem(length); 

告诉你的代码是有效模拟的vector功能的一小部分。即,知道其大小的数组式容器。