struct prediction
{
int p1;
int p2;
};
struct player
{
vector <prediction> p;
int score=0;
string name;
};
int winner (player pla, prediction pred, int i)
{
if (pla.p[i].p1 >= p.p1)
{
pla.p[i].score +=10;
return 1;
}
return 0;
}
错误在pla.p[i].p1
获胜者函数中,错误是p未在此范围内声明。我想
问题在于结构player
和predection
之间的关系。
有人能找到问题吗?
答案 0 :(得分:2)
我认为问题是p意味着是pred,因为p未在函数中声明。
int winner (player pla, prediction pred, int i)
{
if (pla.p[i].p1 >= pred.p1) //changed p to pred
答案 1 :(得分:1)
您的代码中存在错误。
结构就像某个对象的蓝图。我们可以这么说 对象看起来像。例如,我们有一个建筑物的地图,就是这样 建筑的方式。任何人都可以住在建筑地图中吗?没有, 因为它只是地图。结构具有相同的行为。它就像一张地图 对象。该对象的外观如何?,哪些变量会 它持有?,它需要多少内存。结构本身 没有分配内存,但结构的对象保存内存区域 并且可以存储东西。
在你的代码中,预测和玩家没有记忆,但他们的对象即pla,pred。所以不要在结构声明中初始化你的得分变量。你可以为它做一些构造函数。代码看起来像这样。
struct player
{
vector <prediction> p ;
int score ;
string name ;
player(){
score = 0;
}
};
另一件事,你没有引用p引用的地方?这条线对我来说毫无意义。
pla.p[i].score += 10;
我为你构建了一个代码,但对你的逻辑仍然很不了解。
struct prediction
{
int p1;
int p2;
};
struct player
{
vector <prediction> p;
int score;
string name;
player() {
score = 0;
}
};
int winner(player pla, prediction pred, int i)
{
if (pla.p[i].p1 >= pred.p1)
{
pla.score += 10;
return 1;
}
return 0;
}