我试图将一个对象添加到矢量中,但它无效。
class GameClass{
public:
void makeNewPlayer(int isItBad){
if (isItBad==0){
goodPlayers.push_back(PlayerClass());
}
}
private:
vector<PlayerClass> badPlayers;
vector<PlayerClass> goodPlayers;
};
class PlayerClass{
public:
PlayerClass(int badStatus){
myLocation[0]=rand()%(N-2)+1;
myLocation[1]=rand()%(N-2)+1;
isBad=badStatus;
}
void setMyLocation(int x, int y){
myLocation[0]=x;
myLocation[1]=y;
}
void getMyLocation(int *targetLoc){
targetLoc[0]=myLocation[0];
targetLoc[1]=myLocation[1];
}
private:
int myLocation[2];
int isBad=1;
};
没有匹配函数来调用&#39; PlayerClass :: PlayerClass()&#39; |
goodPlayers.push_back(PlayerClass());
编辑: 我怎样才能使它成为默认构造函数???
答案 0 :(得分:3)
您收到该错误,因为您没有默认构造函数。您有自定义构造函数,因此不会自动提供默认构造函数。
所以你需要为badstatus传递一个值,如:
goodPlayers.push_back(PlayerClass(4));
您可以通过将badstatus作为默认参数来设置默认值,例如:
PlayerClass(int badStatus=4){
myLocation[0]=rand()%(N-2)+1;
myLocation[1]=rand()%(N-2)+1;
isBad=badStatus;
}
现在即使你没有提供4的参数,它也能正常工作。给badstatus一个默认值。
建议:始终确保该类的默认构造函数。即使您忘记传入参数,您仍然可以从类中实例化该对象。
在您的情况下,而不是设置int isBad = 1;改为int isBad;并添加&#34; = 1&#34;到
PlayerClass(int badStatus=1){
myLocation[0]=rand()%(N-2)+1;
myLocation[1]=rand()%(N-2)+1;
isBad=badStatus;
}