0

なぜこれがうまくいかないのか理解できないようです。ポインタ型のキューを作成しようとしましたが、失敗しました。私はクラスルームを持っていて、ルームへのポインターのキューを作成したいので、次のようにしました。

queue<*Room> bfsRooms;

これは私にエラーを与えました:

`*'は定数式に含めることはできません

これは、ポインタのSTLキューを作成することが不可能であることを意味しますか?

4

1 に答える 1

7

いいえ、問題はありません。正確なコードと正確なエラーを実際にリンクして、より適切にサポートできるようにする必要があります。

つまり、ポインタのキューは次のようになります。

 Room r;
 std::queue<Room*> rooms;
 rooms.push(&r);

編集:これらのポインターがそれらのオブジェクトを所有している場合、それらが指しているのは、実際にはポインターをスマートポインターにカプセル化する必要があることに注意してください。

std::queue<std::unique_ptr<Room>> rooms;

これはRAIIの原則に従い、リソースを自動的にクリーンアップします。

于 2012-11-07T22:42:24.667 に答える