The following code will cause C4624. But you can see D is not the sub class of B. Why still got this warning? Thanks!
class B {
// Uncomment the following line to resolve.
// public:
~B();
};
class D {B b;}; // C4624 B's destructor not public
More details about the warning:
C4624: 'derived class' : destructor could not be generated because a base class destructor is inaccessible
A destructor was not accessible in a base class and was therefore not generated for a derived class. Any attempt to create an object of this type on the stack will cause a compiler error.