0

すべての Mix_Musics を公開するだけで、問題を心配する必要がないことはわかっていますが、それでもその方法を理解したいと思っています。

   //header.h

    class Music
    {
        private:

            Mix_Music * BGMusic, * fall, * reset, * teleport, * win, * singleCubeWin;

        public:

            Music();

            bool loadMusic();
            void clean_up();

            Mix_Music * getSound( Mix_Music * m ) { return m; }
    };


   //program.cpp

    Music Sound;

    int main( int argc, char* args[] )
    {
        ...

        Mix_PlayMusic( Sound.getSound( "BGMusic" ), -1 );

        ...
    }
4

1 に答える 1

1

上記のコードから、あなたが何をしようとしているのか完全にはわかりません。関数「getSound」は、パラメータとして Mix_Music オブジェクトを取り、同じオブジェクトを返します。いくつかの推測から、文字列を介して BGMusic オブジェクトをリクエストしようとしていると仮定します。これを行うにはいくつかの方法があります。各 Mix_Music オブジェクトの ID を介して、ID でリクエストします。

... // Somewhere above:

enum MixMusicID {
    BGMUSIC,
    FALL,
    RESET,
    TELEPORT,
    WIN,
    SINGLECUBEWIN
};

... // In the class:

Mix_Music * getMusic ( MixMusicID id )
{
    switch (id)
    {
    case BGMUSIC:
        return BGMusic;
        ...
    default:
        return NULL;
    }
}

... // In main:
Mix_PlayMusic( Sound.getSound( BGMUSIC ), -1 );

各オブジェクトの文字列識別子を使用して、同様に行うことができます。つまり、変数名と文字列識別子の間に組み込みの関係がないということです。したがって、列挙型 (上記) または文字列識別子を介してこの関係を実装するのはあなた次第です。

これが役に立てば幸いです。質問が何であるか正確にはわかりません。

于 2009-07-10T05:20:27.063 に答える