0

誤警報!(編集を読む)

SDLを使って小さなゲームを作ろうとしています。エンティティが作成されると、そのイメージはrefcountを増やす必要があり、それは問題ありません。問題は、「SDL_FreeSurface(image)」を使用するときに発生します(減少させます)。これはエンティティ自体の中で発生するはずなので、自分でデストラクタを作成しようとしています。これは、呼び出されたかどうかを確認するためのテストです。カウトを追加しましたが、何らかの理由ですべてのダニと呼ばれていますか?何も削除されないので、動作させるときにすべてのエンティティ値も処理する必要があると思います(このような特殊なケースのみを処理する必要があると考えました)。

Entity::~Entity()
{
    cout << "I'm deleted" << endl;
    //SDL_FreeSurface(image);
}

デストラクタが常に呼び出されることになっている場合(?)、それはなぜですか?

編集私はちょうど各ティックの間に私がいくつかの一時的なエンティティを使用していることに気づきました、それはおそらく分解されるものです、申し訳ありませんがこれをロックしてください。

4

1 に答える 1

4

クラスEntityのオブジェクトが破棄されるたびに、デストラクタが呼び出されます。

デストラクタがティックごとに呼び出される場合、それはオブジェクトがティックごとに破壊されることを意味します。ティックごとに一時的なエンティティオブジェクトを作成している可能性があり、すぐに破棄されます(たとえば、エンティティオブジェクトを値で渡す場合など)。

于 2013-01-17T12:11:25.907 に答える