web-dev-qa-db-fra.com

Comment puis-je réparer une erreur "expression primaire attendue avant") erreur "jeton"?

Voici mon code. Je continue à obtenir cette erreur:

erreur: expression primaire attendue avant ')' Jeton

Quelqu'un a des idées comment résoudre ce problème?

void showInventory(player& obj) {   // By Johnny :D
for(int i = 0; i < 20; i++) {
    std::cout << "\nINVENTORY:\n" + obj.getItem(i);
    i++;
    std::cout << "\t\t\t" + obj.getItem(i) + "\n";
    i++;
}
}

std::string toDo() //BY KEATON
{
std::string commands[5] =   // This is the valid list of commands.
    {"help", "inv"};

std::string ans;
std::cout << "\nWhat do you wish to do?\n>> ";
std::cin >> ans;

if(ans == commands[0]) {
    helpMenu();
    return NULL;
}
else if(ans == commands[1]) {
    showInventory(player);     // I get the error here.
    return NULL;
}

}
6
Tux

showInventory(player); passe un type comme paramètre. C'est illégal, vous devez passer un objet.

Par exemple, quelque chose comme:

player p;
showInventory(p);  

Je suppose que tu as quelque chose comme ça:

int main()
{
   player player;
   toDo();
}

ce qui est affreux. Tout d'abord, ne nommez pas l'objet de la même manière que votre type. Deuxièmement, afin que l'objet soit visible dans la fonction, vous aurez besoin de le transmettre en tant que paramètre:

int main()
{
   player p;
   toDo(p);
}

et

std::string toDo(player& p) 
{
    //....
    showInventory(p);
    //....
}
5
Luchian Grigore
showInventory(player);     // I get the error here.

void showInventory(player& obj) {   // By Johnny :D

cela signifie que le joueur est un type de données et de showInventery attendez une référence à une variable de joueur de type.

donc le code correct sera

  void showInventory(player& obj) {   // By Johnny :D
    for(int i = 0; i < 20; i++) {
        std::cout << "\nINVENTORY:\n" + obj.getItem(i);
        i++;
        std::cout << "\t\t\t" + obj.getItem(i) + "\n";
        i++;
    }
    }

players myPlayers[10];

    std::string toDo() //BY KEATON
    {
    std::string commands[5] =   // This is the valid list of commands.
        {"help", "inv"};

    std::string ans;
    std::cout << "\nWhat do you wish to do?\n>> ";
    std::cin >> ans;

    if(ans == commands[0]) {
        helpMenu();
        return NULL;
    }
    else if(ans == commands[1]) {
        showInventory(myPlayers[0]);     // or any other index,also is not necessary to have an array
        return NULL;
    }

}
0
Adrian Herea