fail to iterate using base pointer over array of derived