2010-06-07 10 views
0

Je suis en train de faire un énorme cauchemar avec ces sous-classes et je n'arrive pas à comprendre pourquoi cela ne fonctionne pas.Héritage des variables de classe à une sous-classe

J'ai classe principale CORPS avec une sous-classe RECTANGLE. Le corps a une fonction appelée SetWorld qui effectue les opérations suivantes

function BODY:SetWorld(worldnum) 

    self.world = worldnum 

end 

Maintenant, si je fais ceci:

rect = RECTANGLE:new() 
rect:SetWorld(1) 

La self.world de valeur est modifiée à 1 dans la fonction SetWorld mais si je tente d'utiliser self.world dans une autre fonction dans BODY il retourne toujours nul. Pourquoi est-ce? Cela fonctionne si je crée un nouveau BODY au lieu d'un RECTANGLE, mais cela signifie que je ne peux pas utiliser ma sous-classe.

+0

Veuillez inclure votre code complet ainsi que l'implémentation de classe que vous utilisez (il y en a plusieurs). – kikito

Répondre

0

Lors de l'utilisation d'un deux-points pour appeler une méthode, le premier argument est défini sur "self" et tous les autres arguments sont décalés. Si vous aviez fourni plus de code, il serait plus facile de résoudre le problème, mais je crois que cela peut être la question:

local x = { 
    new = function(o, t) 
     print("1st Arg", o) 
     print("2nd Arg", t) 
    end 
} 

x.new("Hello World") 
x:new("Hello World") 

Voyez-vous comment les arguments sont décalés?

Questions connexes