I\'m a little confused. Basically, I\'ve got 2 different resource managers (AudioLibrary and VideoLibrary) that both inherit from a shared BaseLibrary class. This base class
This is due to the fact that you haven't declared your Media
destructor virtual
. As you can see, if you do, for example:
struct Media {
virtual ~Media() = default;
};
struct AudioLibrary : Media {};
struct VideoLibrary : Media {};
int main() {
std::map> map;
map[0] = std::unique_ptr(new AudioLibrary());
map[1] = std::unique_ptr(new VideoLibrary());
}
demo
both destructors will be called.