0

たとえば、コマンド パターンを使用してコマンドをキューに追加しています。キュー内のエントリは、コマンド オブジェクトとコマンドを実行する時間を保持する単純な構造体のような CommandItems です。

struct CommandItem
{
  time_t theTime;
  std::shared_ptr<Command> command;
  ...
  // comparison operator implemented
}

std::priority_queue<CommandItem> commandQueue_;

キュー内のコマンドに対して 2 つの CommandItems が存在するように、同じコマンドを異なる時間に 2 回実行したい場合、2 つの別個のコマンド オブジェクトを作成する必要がありますか? または、同じコマンド オブジェクトを 2 回入れることはできますか? 長所短所?

(オブジェクトをコマンドするために shared_ptr を使用することに注意してください。キューは、さまざまなサブクラスのコマンド オブジェクトを保持する必要があります)

4

2 に答える 2

3

これが の要点のようなものですshared_ptr。同じオブジェクトへの複数のポインタを持つことができ、そのオブジェクトは誰も必要としなくなったときに自動的に削除されます。

Command クラスにはサブクラスがあるため、仮想デストラクタがあることを確認してください。

于 2012-04-20T21:38:01.297 に答える
1

実装によって異なりますが、通常は、アクションの個別のインスタンスに対して個別のオブジェクトを作成することをお勧めします (同じアクションであっても)。

これはポインターであるため、コレクション内の個別のインスタンスになります (一部のコレクションでは同じアイテムの複数のインスタンスが許可されますが)。

于 2012-04-20T21:38:44.227 に答える