Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include<list>
- #include<vector>
- using std::vector;
- using std::list;
- class FileAudio {
- private:
- double MB;
- public:
- double dimensione() const { return MB; }
- virtual FileAudio* clone() const = 0;
- virtual bool quality() const = 0;
- };
- class Mp3 : public FileAudio {
- private:
- double bitrate;
- public:
- double get_bitrate() const { return bitrate; }
- virtual Mp3* clone() const {
- return new Mp3(*this);
- }
- virtual bool quality() const {
- return get_bitrate() >= 256;
- }
- };
- class WAV : public FileAudio {
- private:
- double campionamento;
- public:
- double frequenza() const { return campionamento; }
- virtual WAV* clone() const {
- return new WAV(*this);
- }
- virtual bool quality() const {
- return frequenza() >= 192;
- }
- };
- class MusicPlay {
- private:
- list<const FileAudio*> l;
- public:
- vector<WAV*> qualityWAV(double dim) const {
- vector<WAV*> v;
- for (list<const FileAudio*>::const_iterator it = l.begin(); it != l.end(); ++it) {
- const WAV * temp= dynamic_cast<const WAV*>(*it);
- if (temp && temp->dimensione() <= dim)
- v.push_back(const_cast<WAV*>(temp));
- }
- return v;
- }
- list<FileAudio*> nonConstCopy() const {
- list<FileAudio*> lista;
- for (list<const FileAudio*>::const_iterator it = l.begin(); it != l.end(); ++it) {
- lista.push_back(const_cast<FileAudio*>((*it)->clone()));
- }
- }
- vector<Mp3> removeMp3(unsigned int br) {
- vector<Mp3> v;
- for (list<const FileAudio*>::const_iterator it = l.begin(); it != l.end(); ++it) {
- Mp3* temp = dynamic_cast<Mp3*>(const_cast<FileAudio*>(*it));
- if (temp && temp->get_bitrate() < br) {
- delete* it;
- v.push_back(*temp);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement