class sich im vector selbst registrieren lassen



  • Hi

    Ich möchte im Konstruktor meiner Klasse die Klasse sich selbst in einem vector registrieren lassen.

    ich habs mit dem pointer 'this' probiert , der gibt aber class uUnit *const zurück
    Hier der code:

    class
    uUnit {
    
    	short uDirection;
    	short health;
    
    	objects uType;
    	position uPos;
    	unit_weap uWeap;
    
    public:
    	uUnit();
    	uUnit(short my_dir,short my_health,objects my_type,position my_pos,unit_weap my_weap);
    	void uMove(direction direc);
    	void uDoMeleeAttack();
    	void uRegMe();
    
    	void uTakeDamage(int damage);
    };
    
    //Konstruktor===============================================================================================
    uUnit::uUnit(short my_dir,short my_health,objects my_type,position my_pos,unit_weap my_weap)
    : uDirection(my_dir)
    , health(my_health)
    , uType(my_type)
    , uPos(my_pos)
    , uWeap(my_weap)
    	{++unitcount;}
    
    uUnit::uUnit(){}
    //==========================================================================================================
    
    vector<uUnit> uVector;
    
    void
    uUnit::uDoMeleeAttack(){}
    
    void
    uUnit::uRegMe(){
    	uVector.push_back(this);
    }
    

    und hier die Fehlermeldung

    error C2664: 'push_back' : Konvertierung des Parameters 1 von 'class uUnit *const ' in 'const class uUnit &' nicht moeglich
            Ursache: Konvertierung von 'class uUnit *const ' in 'const class uUnit' nicht moeglich
            Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Ueberladungsaufloesung des Konstruktors ist mehrdeutig
    

    Hab ich da was beim vector falsch gemacht oder muss ich das ganze anders machen



  • Du hast einen Vektor mit Objekten definiert, versuchst aber einen Zeiger auf
    ein solches Objekt einzufügen.



  • Danke
    Hab jetzt n vector mit pointern gemacht und es funktioniert 😉


Anmelden zum Antworten