我知道我可以公开所有的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 );
...
}
答案 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 );
您可以使用每个对象的字符串标识符进行类似操作。它真正归结为变量名称和字符串标识符之间没有内置关系。因此,您可以通过枚举(上方)或字符串标识符来实现此关系。
希望这有所帮助,再次确定问题究竟是什么。