neighbors() returns a vector of Tuple objects that I created. Tuple is just a struct with 2 int member variables x and y. The neighbors function returns the surrounding coordinates of the calling Ant object in a 20x20 grid of characters.
I found out that if I move the line "moves_till_breed = 3" outside of the 'if' block, the member variable gets changed. This doesn't make any sense though because I traced my program using gdb and I am positve that valid_choices.size() is greater than 0, so the if block is executed.
I also noticed something else that seems wrong with my debugger. When tracing programs using "next" in gdb, gdb sometimes randomly re-traces lines over again from 10-20 lines before without there being any loops in the program. Could this be a problem with gdb or the g++ compiler?