In addition to Palini's solution in which the pointer is encapsulated in a class or alternatively the use of smart pointers, it would also be possible to simply delete the invalid pointer from the vector before deleting it. Then it would no longer cause any problems.
m_vBol.erase(std::find(m_vBol.begin(), m_vBol.end(), pbol));
delete pbol;
Alternatively, you could overwrite it with nullptr.