1

大量のデータを格納するクラス「Node」を作成しました。このクラスの同じタイプのリストを作成しようとしています。push_back() またはその他の関数を使用しようとするとエラーが発生します。

エラーは次のとおりです:" /home/.../FIFO.cpp|61|エラー: '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

コンパイラ エラーは、「パラメーターとして受け取る push_back 関数が見つかりませんでした」と通知Node *します。これは、リストに が含まれていて、 が含まれNodeていないためNode *です。これらは同じタイプではありません。使用する:

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

s のリストを作成しますが、 (へのポインタ)Nodeを挿入しようとすると、返されます。Node*Nodenew

を使用する場合はlist<Node>、次のように記述できます。

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

Nodeでオブジェクトを作成する場合newは、質問のコードを編集しprocessListlist<Node*>. この場合、リストから要素を削除する前にオブジェクトを手動で削除する必要があることに注意してください。そうしないと、メモリ リークが発生しますdeleteNode

于 2011-03-06T02:05:21.557 に答える