我正在制作一个简单的棋子游戏并设置网格系统,我只想开始设置下面课程中显示的参数;
#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对象,我需要添加到我的跟踪器类中?
答案 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
添加到向量,因此如果您有权使用c++11功能,则可以使用emplace_back
:
std::vector<Tracker> setup;
setup.emplace_back(1, xx, yy, 20 + i);
这比首先构建Tracker
然后使用push_back
更有效。