これが私のコードです。私はこのエラーを受け取り続けます:
エラー: ')'トークンの前にプライマリ式が必要です
誰でもこれを修正する方法を知っていますか?
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;
}
}
showInventory(player);
は、型をパラメーターとして渡します。これは違法です。オブジェクトを渡す必要があります。
たとえば、次のようなものです。
player p;
showInventory(p);
私はあなたがこのようなものを持っていると思います:
int main()
{
player player;
toDo();
}
ひどいです。まず、オブジェクトにタイプと同じ名前を付けないでください。次に、オブジェクトが関数内に表示されるようにするには、オブジェクトをパラメーターとして渡す必要があります。
int main()
{
player p;
toDo(p);
}
そして
std::string toDo(player& p)
{
//....
showInventory(p);
//....
}
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;
}
}