帮我给上述代码写一个头文件
时间: 2023-08-28 15:24:40 浏览: 52
好的,根据上述代码,这里给您提供一个头文件 `sound.h` 的示例代码:
```cpp
#ifndef SOUND_H
#define SOUND_H
#include <QObject>
#include <QSoundEffect>
class Sound : public QObject
{
Q_OBJECT
public:
explicit Sound(QObject *parent = nullptr) : QObject(parent) {}
virtual ~Sound() {}
virtual void play() = 0;
};
class BackgroundSound : public Sound
{
Q_OBJECT
public:
explicit BackgroundSound(QObject *parent = nullptr) : Sound(parent) {}
void play() override {
QSoundEffect sound;
sound.setSource(QUrl::fromLocalFile("background.wav"));
sound.setLoopCount(QSoundEffect::Infinite);
sound.play();
}
};
class ExplosionSound : public Sound
{
Q_OBJECT
public:
explicit ExplosionSound(QObject *parent = nullptr) : Sound(parent) {}
void play() override {
QSoundEffect sound;
sound.setSource(QUrl::fromLocalFile("explosion.wav"));
sound.setLoopCount(1);
sound.play();
}
};
#endif // SOUND_H
```
在这个头文件中,我们定义了 `Sound` 类作为所有音效的基类,并定义了 `BackgroundSound` 和 `ExplosionSound` 两个派生类,分别重写了父类的 `play()` 函数。请注意,由于 `Sound` 类是一个抽象类,因此我们需要将 `play()` 函数声明为纯虚函数。
如果您需要在其他文件中使用这些类,只需要在文件开头包含这个头文件即可。例如:
```cpp
#include "sound.h"
// 使用 Sound 类的示例代码
Sound* sound = new BackgroundSound(this);
sound->play();
delete sound;
sound = new ExplosionSound(this);
sound->play();
delete sound;
```