Program crashes when trying to delete Canon ( canon ball )

I press space and i shoot but when canon ball reaches "water" it should delete itself but instead it crashes which normally means i'm trying to access memory which no longer exists.... but i don't know what to do...

First thing before digging further: why does your cannon class know that much about its container and the rest ?
You should rather have a "game engine" that handle that kind of stuff. Why should a canon be responsible for its own deletion ?

I'm still a begginer at stuff like this and atm im making a simple game, i already figured out the problem to this so im going to mark this as solved but the thing is, i want to make sure that when my canon reaches its destination that it deletes itself and the best way to do that was to do it inside the class.... I believe.... and about the things i included, some of them probably aren't needed...