mercredi 25 septembre 2019

How does C++ knows child class calls a parent method?

I don't know how to summarize my question so couldn't find an answer on Google.

When overriding a parent method,

void Child::method(){
    //stuff
    Parent::method();
}

Works perfectly. But the parent method requires the information from the Child class instance to work properly, which is not given as arguments. So my question is, does C++ have a mechanism to let the Parent know which instance of a Child class calls a Parent method, like without doing Parent::method(this) ?

The thing that makes me think this is, if you do something like this,

int main(){
    SomeParentClass::someMethod();
}

It gives: error: call to non-static member function without an object argument. So the compiler needs to know the instance, which was not also given in the child class. But did not raise an error so it must have known the instance.

Edit: I added the Qt tag because I am experimenting on a Qt class. So that I can give an example if needed.

Aucun commentaire:

Enregistrer un commentaire