错误:在 C++ 中返回之前应为非限定 ID

error : expected unqualified-id before return in c++

本文关键字:ID C++ 返回 错误      更新时间:2023-10-16

当我想编译时,我得到:问题:"返回"之前的预期不合格ID返回 0;关于最后一行:错误:在 { 令牌之前扩展声明

只保留了代码的中间部分,只是我更改了...问题出在哪里???这是我的代码:


#include <iostream>
using namespace std;
int main()
{
  cout << "Pensez a un personnage : Mlle Rose, le Professeur Violet, "
       << "le Colonel Moutarde," << endl
       << "le Reverend Olive ou Mme Leblanc." << endl << endl;
  cout << "Votre personnage a-t-il des moustaches (1 : oui, 0 : non) ? ";
  bool moustaches;
  cin >> moustaches;
  cout << "Votre personnage porte-t-il des lunettes ? ";
  bool lunettes;
  cin >> lunettes;
  cout << "Votre personnage porte-t-il un chapeau ? ";
  bool chapeau;
  cin >> chapeau;
  cout << "Est-ce que votre personnage est un homme ? ";
  bool homme;
  cin >> homme;
  cout << "==> Le personnage auquel vous pensez est ";
  if (chapeau) {
    /*******************************************
     * Completez le programme a partir d'ici.
     *******************************************/
    cout << "le Professeur Violet";
    else if (moustaches) {
        cout << "le Colonel Moutarde";
    }
    else if (not lunettes) {
        cout << "Mlle Rose";
    }
    else if (homme) {
        cout <<"le Révérend Olive";
    }
    else {
        cout <<"Mme Leblanc";
    }
    /*******************************************
     * Ne rien modifier apres cette ligne.
     *******************************************/
  }
  cout << endl;
  return 0;
}

----------

只是为了那些出于与我相同的原因降落在这里的人:

不要使用保留关键字

我在类定义 delete() 中命名了一个函数,这是一个保留关键字,不应用作函数名称。将其重命名为 delete()(这在我的情况下在语义上也很有意义)解决了这个问题。

有关保留关键字的列表:http://en.cppreference.com/w/cpp/keyword

我引用:"由于它们被语言使用,这些关键字不可用于重新定义或重载。

if (chapeau) {

您忘记了此 if 语句的结尾大括号,因此后续else if被视为语法错误。您需要在if语句正文完成后添加大括号:

if (chapeau) {
    cout << "le Professeur Violet";
}
else if (moustaches) {
    cout << "le Colonel Moutarde";
}
// ...

建议:

  • 使用一致的 3-4 空格缩进,您会发现这些问题更容易
  • 使用垂直排列 {} 的大括号样式,您将很快看到这些问题
  • 始终缩进控制阻止另一个级别
  • 使用语法突出显示编辑器,它会有所帮助,你以后会感谢我的

例如

type
functionname( arguments )
{
    if (something)
    {
        do stuff
    }
    else
    {
        do other stuff
    }
    switch (value)
    {
        case 'a':
            astuff
            break;
        case 'b':
            bstuff
            //fallthrough //always comment fallthrough as intentional
        case 'c':
            break;
        default: //always consider default, and handle it explicitly
            break;
    }
    while ( the lights are on )
    {
        if ( something happened )
        {
            run around in circles
            if ( you are scared ) //yeah, much more than 3-4 levels of indent are too many!
            {
                scream and shout
            }
        }
    }
    return typevalue; //always return something, you'll thank me later
}
您需要

cout << endl;行之前的"}"移动到第一个else之前的行。