2011-01-27 4 views
0

Quelqu'un peut-il m'expliquer la différence entre ces deux déclarations?accès à la méthode de classe

// Call super class method 
This->objClass->super->OnConnect((BasicIoControlType*)This); 

// Call super class method 
ClipListIoCtrlClassDef.super->OnConnect((BasicIoControlType*)this); 
+4

Etes-vous sûr qu'il est C++? –

+1

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. –

+1

Il est peu probable que ce soient des déclassements. – Flexo

Répondre

1

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.,

+0

Je soupçonne que le 'This' dans la question devrait vraiment être' this'. –

+1

@Michael: ou, peut-être le 'ceci' dans la question devrait vraiment être' This' ... –

+0

Merci Alf, Ça aide beaucoup. Je ne peux pas assurer que c'est un code C++. Pour mieux expliquer: C'est une partie du code sur laquelle je travaille. Il est destiné à fonctionner dans un microcontrôleur. Les gars qui ont fait le code utilisent des concepts OO et parfois je me perds dans le code. – user3172978

Questions connexes