2013-10-04 13 views
8

quando voglio compilare ottengo: Probléme: atteso l'id non qualificato prima del "ritorno" return 0; sull'ultima riga: erreur: dichiarazione expexted prima {tokenerrore: atteso id non qualificato prima del ritorno in C++

Ho lasciato il codice invariato solo nella parte centrale che ho modificato ... qual è il problema ??? Ecco il mio codice:


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


---------- 

risposta

8
if (chapeau) { 

hai dimenticato la parentesi finale per questo if dichiarazione, in modo che il successivo else if è considerato un errore di sintassi. È necessario aggiungere la parentesi quando il corpo if affermazione è completo:

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

thx ma ho ancora ottenere l'ultimo errore 2 righe: return 0; } id non previsto prima dell'errore di ritorno: dichiarazione attesa prima {token – user2774480

+0

controlla la mia risposta, il tuo problema è che uno dei tuoi '}' è posizionato male. –

+0

@ user2774480 La parentesi finale dell'istruzione 'if' iniziale è ancora alla fine delle righe' else if'. Per favore rimuovilo e l'errore dovrebbe andare via. – 0x499602D2

0

è necessario spostare "}" prima della linea di cout << endl; alla linea prima della prima else.

0

Suggerimenti:

  • uso coerente 3-4 spazi rientro e troverete questi problemi molto più facile
  • utilizzare uno stile doppietta che allinea {} verticalmente e vedrete questi problemi in modo rapido
  • sempre blocchi di controllo di rientro un altro livello
  • uso un editor di evidenziazione della sintassi, aiuta, tu mi ringrazierai più tardi

per esempio,

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

Solo per il gusto di persone che sbarcò qui per lo stesso motivo che ho fatto:

Non utilizzare parole chiave riservate

ho chiamato una funzione nella mia classe definizione delete(), che è una parola chiave riservata e non deve essere utilizzata come nome di una funzione. Rinominandolo in cancellazione() (che aveva anche senso semanticamente nel mio caso) risolse il problema.

Per un elenco di parole chiave riservate: http://en.cppreference.com/w/cpp/keyword

cito: "Dal momento che sono utilizzati dal linguaggio, queste parole chiave non sono disponibili per la ri-definizione o sovraccarichi."

Problemi correlati