我定义了以下结构
typedef struct NodeMulti{
int key;
vector<NodeMulti*> child;
};
在一个函数中,让我说我有:
NodeMulti* newNode = (NodeMulti*)malloc(sizeof(NodeMulti));
NodeMulti* anotherNode = (NodeMulti*)malloc(sizeof(NodeMulti));
newNode->child.push_back(anotherNode);
它不起作用,有关如何修复它的任何建议? 如果我尝试更改键值,它的工作原理;对于前: &#39; newNode-&gt; key = ...`工作正常 谢谢!
答案 0 :(得分:1)
在C ++中使用new
,而不是malloc
。
malloc
仅分配内存但不会调用构造函数。例如。您的vector
未初始化,因此尝试访问它(例如push_back
)会调用未定义的行为。
new
都会分配内存并调用构造函数,因此您的vector
将使用其默认构造函数进行初始化,从而创建一个空的vector
。
此外,在C ++中,您可以像这样声明struct
:
struct NodeMulti { ... };
即。不需要typedef
。同样在您的代码中,您甚至没有在typedef
声明中指定名称,因此it has no effect。