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 回答