2014-06-18 3 views
-6

Я имею эту структуру:новообращенный таНос на новый 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' работает только с 1 параметром – mch

+0

как насчет' prob.x = new node * [prob.length] '? – 101010

ответ

0

Ok, этот код может работать, обратите внимание, что вы больше не держит указатель на указатель, но простой массив - что может или не может работать для того, что вы пытаетесь сделать:

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. А именно, массивный контейнер, который знает о его размере.

Смежные вопросы