web-dev-qa-db-ja.com

「 ')'トークンの前に期待されるプライマリ式」エラーを修正するにはどうすればよいですか?

これが私のコードです。私はこのエラーを受け取り続けます:

エラー: ')'トークンの前にプライマリ式が必要です

誰でもこれを修正する方法を知っていますか?

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);は、型をパラメーターとして渡します。これは違法です。オブジェクトを渡す必要があります。

たとえば、次のようなものです。

player p;
showInventory(p);  

私はあなたがこのようなものを持っていると思います:

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

ひどいです。まず、オブジェクトにタイプと同じ名前を付けないでください。次に、オブジェクトが関数内に表示されるようにするには、オブジェクトをパラメーターとして渡す必要があります。

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

そして

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

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

つまり、playerはデータ型であり、showInventoryはplayer型の変数への参照を期待しています。

だから正しいコードは

  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