我正在尝试返回SDL Mix_Music数据类型,但我遇到了问题

时间:2009-07-10 05:03:11

标签: c++ user-interface sdl

我知道我可以公开所有的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 );

        ...
    }

1 个答案:

答案 0 :(得分:1)

从上面的代码中我并不完全确定你要做什么。函数'getSound'将Mix_Music对象作为参数并返回相同的对象。现在从一些演绎中我假设你试图通过字符串请求BGMusic对象。有几种方法可以通过ID来为每个Mix_Music对象提供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 );

您可以使用每个对象的字符串标识符进行类似操作。它真正归结为变量名称和字符串标识符之间没有内置关系。因此,您可以通过枚举(上方)或字符串标识符来实现此关系。

希望这有所帮助,再次确定问题究竟是什么。