code donné en question:
// Call super class method
This->objClass->super->OnConnect((BasicIoControlType*)This);
// Call super class method
ClipListIoCtrlClassDef.super->OnConnect((BasicIoControlType*)this);
Ce peut en principe C++, mais il ne vous regarde pas comme C++.
Il est C++, alors il n'y a pas de différence dans les appels autres que la spécification de l'objet à appeler OnConnect
sur.
Dans le premier cas, si c'est C++, vous avez probablement un pointeur This
qui pointe vers un objet avec un membre objClass
, qui est un pointeur vers un objet avec un membre super
, qui pointe vers un objet une méthode OnConnect
. Je dois écrire "probablement" parce que C++ permet la surcharge de l'opérateur ->
, ce qui signifie que ces bêtes ne sont pas nécessairement des pointeurs bruts. Si c'est C++.
Dans le second cas, si ce est C++, vous avez un objet ClipListIoCtrlClassDef
qui a un membre qui super
(probablement) est un pointeur sur un objet avec une méthode OnConnect
. Encore une fois je dois écrire "probablement" parce que C++ permet ->
d'être surchargé. Et vous ne fournissez pas le contexte nécessaire.
Il peut être être que vous vous interrogez sur la différence entre o.method()
et p->method()
.
Si tel est le cas, le ->
intégré est simplement un raccourci pour écrire (*p).method()
, où *
est l'opérateur de déréférencement de pointeur. Si cela ne vous est pas familier, consultez votre manuel C++. Et si vous n'avez pas de manuel, vous en avez besoin (par exemple, le dernier en date de Bjarne Stroustrup).
Vive & HTH.,
Etes-vous sûr qu'il est C++? –
Vous devrez probablement modifier votre question pour fournir plus de détails, tels que les parties pertinentes des déclarations de classe en question. À l'heure actuelle, ces deux appels semblent faire des choses très différentes. –
Il est peu probable que ce soient des déclassements. – Flexo