In the header you are declaring entries to be an array of pointers to IVTEntry while in the source file you are using a new statement that returns a single pointer to an IVTEntry. The header should be changed to be just a pointer (throw away the array subscript part).
IVTEntry* IVTEntry::entries[16]; //zero initialized if global
void* foo[42] = {6,9,13}; //zero initialized, the other elements
void* foo[42] = {}; //¿is this standard? (sigh)