Is it possible to implement an abstract base class with members inherited from another parent class in C++?
It works in C#, so I tried doing it in C
It is impossible to be done as you wrote it. The reason behind it is, that every non-static method needs object (this) to operate on (here you don't use any of the object's fields or methods, but that doesn't matter), and this object must be of apropriate type. Parent::sayHi expects this to be of the type Parent, and since ITalk is not related to Parent at all, Parent::sayHi and ITalk::sayHi methods are fundamentaly incompatible.
C++ is having static type system, so the type must be known at compile time. Languages that use dynamic typing are usually less strict about such constructions, as they can test if object is of apropriate class at function call.
In C++ the easiest way to implement such behavior would be to simply make Child::sayHi to call Parent::sayHi, as Child is the only class that "knows" where are Parent and ITalk and how should they be related.
class Child : public Parent, public ITalk
{
virtual void sayHi(){ Parent::sayHi(); }
};