1

我创建了一个类“节点”来包含一堆数据。我正在尝试列出此类相同类型的列表。我在尝试使用 push_back() 或任何其他函数时出错。

错误如下:“/home/.../FIFO.cpp|61|error: no matching function for call to 'std::list >::push_back(Node*&)'|”

Node *tempProcess;
list<Node> processList; //list of all processes

tempProcess = new Node(tempArrivInt, tempExecInt);
processList.push_back(tempProcess);

有人可以帮忙吗?

4

2 回答 2

4

编译器错误告诉您“找不到一个将 aNode *作为参数的 push_back 函数”。这是因为您的列表 containsNode和 not Node *,它们不是相同的类型。采用:

list<Node *>
于 2011-03-06T01:56:43.787 回答
3

您创建了一个Nodes 列表,但尝试插入一个Node*(指向 的指针Node),这就是new返回的内容。

如果你想使用 a list<Node>,你可以写:

processList.push_back(Node(tempArrivInt, tempExecInt));

如果您想使用 来创建Node对象new,则需要编辑问题中的代码,使其processList成为list<Node*>. 请注意,在这种情况下,您必须在从列表中删除元素之前手动delete创建Node对象,否则会导致内存泄漏。

于 2011-03-06T02:05:21.557 回答