I've got a IBase class with virtual void CastData(){} inside it. there it's utilized in another function.

I've another totally unrelated class IC with

virtual void CastData(){
    for (FunctionIterator it(funcs.begin()); it != funcs.end(); ++it){
        DataType dataCopy;
        dataCopy = *dataElement;
        (*it)(dataCopy);
    }
}

Now I wish to produce a new class where CastData from C will overrite CastData from base class.

And So I try something similar to class IGraphElement : public IBase, public IC

All functions from run properly. and all sorts of IC functions run but IBase CastData wasn't overwritten.

How you can do such kinds of overrites when virtual functions from class you inherit overrite virtual functions from another class you inherit?

virtual functions should be overriden with a derived class, not another base class. Possibly offer an override in IGraphElement that calls into IC to complete the job.

If you wish to override the CastData for those, you might must abstract an interface making IC and IBase be a consequence of exactly the same interface. But while you explain, IBase and IC totally unrelated class, don't expect IGraphElement can override CastData in IBase and IC beautifully.