You can use null object pattern. Define a (shared) null Song
.
class Song {
public:
static const Song null_song;
};
Song Album::pop() {
if (empty())
return Song::null_song;
return songs[top--];
}
Remember to initialize Song::null_song
.