The obvious fix would be to take the address of Test2.
Test.setParent(&Test2);
Of course, that will probably have an undesirable result since your Object class think it owns the pointers that are fed to it and also assumes they were allocated with new, which is a mistaken assumption in this case.
1 2 3
int main()
Object Test;
Test.setParent(new DerivedObject);
would be more correct.
Heh. Ignore the strike-through portion of this post. I should've looked more closely.