简体   繁体   English

如何修复“之前的预期主表达式”'令牌'错误?

[英]How do I fix a “Expected Primary-expression before ')' token” error?

Here is my code. 这是我的代码。 I keep getting this error: 我一直收到这个错误:

error: expected primary-expression before ')' token 错误:')'令牌之前的预期primary-expression

Anyone have any ideas how to fix this? 任何人有任何想法如何解决这个问题?

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); is passing a type as parameter. 传递类型作为参数。 That's illegal, you need to pass an object. 这是非法的,你需要传递一个对象。

For example, something like: 例如,类似于:

player p;
showInventory(p);  

I'm guessing you have something like this: 我猜你有这样的事情:

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

which is awful. 这太可怕了。 First, don't name the object the same as your type. 首先,不要将对象命名为与您的类型相同。 Second, in order for the object to be visible inside the function, you'll need to pass it as parameter: 其次,为了使对象在函数内部可见,您需要将其作为参数传递:

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

and

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

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

this means that player is an datatype and showInventory expect an referance to an variable of type player. 这意味着播放器是一种数据类型,而showInventory期望对播放器类型的变量进行referance。

so the correct code will be 所以正确的代码将是

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

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM