如何在c ++中使用Tracker类创建Tracker对象?

时间:2016-05-23 00:08:58

标签: c++ grid

我正在制作一个简单的棋子游戏并设置网格系统,我只想开始设置下面课程中显示的参数;

#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) {

    }

};

我只是尝试设置每个部分的位置并输入我的主类,这样我以后就可以操作它们了。错误是

错误(活动)“Tracker”类没有默认构造函数

这是在我按照这样设置每一件之后发生的:

vector<Tracker> setup;
Tracker checker;


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

为了在其他类中使用Tracker对象,我需要添加到我的跟踪器类中?

1 个答案:

答案 0 :(得分:4)

您应该使用:

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

而不是:

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

这是因为Tracker类唯一的构造函数是:

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

所以这一行:

Tracker checker;

导致错误:

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

另外,由于您要将Tracker添加到向量,因此如果您有权使用功能,则可以使用emplace_back

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

这比首先构建Tracker然后使用push_back更有效。