2016-05-23 3 views
1

Ich mache ein einfaches Spiel und habe ein Rastersystem eingerichtet, ich möchte nur die Parameter in der Klasse darunter einstellen;Wie kann ich ein Tracker-Objekt aus meiner Tracker-Klasse in C++ erstellen?

#include <iostream> 
#include <vector> 

using namespace std; 

class Tracker { 
private: 
    int type_; 
    int positionx_; 
    int positiony_; 
    int checkID_; 
public: 
    Tracker(int type, int positionx, int positiony, int checkID) : type_(type), positionx_(positionx), positiony_(positiony), checkID_(checkID) 
    { 

    } 
    void setType(int type) { 
     type_ = type; 
    } 

    void setPosX(int posx) { 
     positionx_ = posx; 
    } 

    void setPosY(int posy) { 
     positiony_ = posy; 
    } 

    void setCheckID(int ID) { 
     checkID_ = ID; 
    } 

    int getType(int ID) { 
     return type_; 
    } 

    int getPosX(int ID) { 
     return positionx_; 
    } 

    int getPosY(int ID) { 
     return positiony_; 
    } 

    int getCheckID(int positionx, int positiony) { 
     return checkID_; 
    } 

    bool AddPeice(int positionx, int positiony, int checkID) { 

    } 

}; 

Ich bin nur jedes Stück Ort und Art in meiner Hauptklasse gesetzt VERSUCHT, so ich in der Lage sein werde, sie später zu manipulieren. Der Fehler ist

Fehler (aktiv) kein Standard-Konstruktor für die Klasse existiert „Tracker“

Dies geschieht, nachdem ich jedes Stück festgelegt wie folgt:

vector<Tracker> setup; 
Tracker checker; 


checker.setType(1); 
    checker.setCheckID(20 + i); 
    checker.setPosX(xx); 
    checker.setPosY(yy); 
    setup.push_back(checker); 

Was ich meine Tracker hinzuzufügen tun müssen Klasse, um das Tracker-Objekt in anderen Klassen zu verwenden?

Antwort

4

sollten Sie verwenden:

Tracker checker(1, xx, yy, 20 + i); 

Statt:

Tracker checker; 
checker.setType(1); 
checker.setCheckID(20 + i); 
checker.setPosX(xx); 
checker.setPosY(yy); 

Dies ist, weil der einzige Konstruktor, Ihre Tracker Klasse ist:

Tracker(int type, int positionx, int positiony, int checkID) 

So ist die Zeile:

verursacht den Fehler:

Error (active) no default constructor exists for class "Tracker" 

Auch da Sie die Tracker zu einem Vektor hinzufügen, könnten Sie emplace_back verwenden, wenn Sie den Zugriff auf Eigenschaften haben:

std::vector<Tracker> setup; 
setup.emplace_back(1, xx, yy, 20 + i); 

Dies kann mehr sein effizienter als die Konstruktion der Tracker zuerst und dann push_back.

Verwandte Themen