2016-07-05 4 views
-1

Ich habe Klasse-Spieler wie folgt definiert:Cocos2d-x V3 Wie überschreibt man :: create() richtig?

"Player.h"

#ifndef PLAYER_h 
#define PLAYER_h 

#include "cocos2d.h" 

USING_NS_CC; 

class Player: public Sprite { 
public: 
    Player(); 
    ~Player(); 


private: 
    Sprite *playerSprite; 

    __String name; 

    int maxHP; 
    int currHP; 

    int maxMP; 
    int currMP; 

    int maxEXP; 
    int currEXP; 
}; 

#endif 

und "Player.cpp":

#include "Player.h" 

I int MaxHP, int maxMP initialisieren möchten. . etc nach

Player* myPlayer = Player::create(); 

Was wäre der richtige Weg, um zu überschreiben :: create() func mit Parametern wie

// create(int maxHP, int currHP, int maxMP, int currMP, int maxEXP, int currEXP) 
Player* myPlayer = Player::create(100, 100, 100, 100, 100, 100); 

kann verwendet werden?

+0

Warum Spieler in einer 'create' statischen Funktion erstellen, wenn Sie es im Konstruktor tun können? Sie sollten mit den Zeigern aufhören und RAII verwenden. –

+0

Warum erbt Ihr Player auch 'Sprite' und enthält es? –

+0

@Ivan Rubinson Wie kann ich dieser Klasse ein Sprite zuweisen? Ich bekomme diese Sprite-Vererbung nicht ganz. –

Antwort

1

Sie können create überlasten (mehrere Funktionen mit demselben Namen, aber unterschiedlicher Signatur).

class Player : public Sprite { 
public: 
    static Player* create(int maxHP, int currHP, int maxMP, int currMP, int maxEXP, int currEXP) { 
     Player* p = Player::create(); 
     p->maxHP = maxHP; 
     // etc ... 
     return p; 
    } 
} 
Verwandte Themen