Because the vector stores actualy observer object. If you are to use polymorphism you must store pointers.