结构中的元素未在此范围内声明

时间:2015-10-24 03:45:40

标签: c++

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未在此范围内声明。我想

问题在于结构playerpredection之间的关系。

有人能找到问题吗?

2 个答案:

答案 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;
}