cuốn sách gpt4 ai đã làm

c++ - 向类中添加对象

In lại Tác giả: Walker 123 更新时间:2023-11-28 00:25:16 26 4
mua khóa gpt4 Nike

我正在尝试将对象添加到 vector ,但它不起作用。

Mã số:

class GameClass{
công cộng:
void makeNewPlayer(int isItBad){
if (isItBad==0){
goodPlayers.push_back(PlayerClass());
}
}
riêng tư:
vector badPlayers;
vector goodPlayers;
};


class PlayerClass{
công cộng:
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];
}
riêng tư:
int myLocation[2];
int isBad=1;
};

错误

no matching function for call to 'PlayerClass::PlayerClass()'|

从这一行:

     goodPlayers.push_back(PlayerClass());

编辑:我怎样才能让它成为默认构造函数???

câu trả lời hay nhất

您收到该错误是因为您没有默认构造函数。您有一个自定义构造函数,因此不会自动提供默认构造函数。

因此您需要为 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;并将 "=1"添加到

PlayerClass(int badStatus=1){
myLocation[0]=rand()%(N-2)+1;
myLocation[1]=rand()%(N-2)+1;
isBad=badStatus;
}

关于c++ - 向类中添加对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25411558/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress