Pergunta

while(true)
{ 
  cout << "Name: ";
  getline(cin, Name);
  if(Name == "Stop")
    break;

  cout << "Additional Name - Y/N: ";
  getline(cin, additional);
  if (additional == "Y") 
    cout << "Additional Name: ";
  getline(cin, Name2);
  else
    cout << "Location: ";
  getline(cin, Location);
  if(Location == "Stop")
    break;
}


chief.cpp: In member function ‘void BookList::Fill()’:
chief.cpp:128: error: ‘else’ without a previous ‘if’

Depois que o usuário insere o primeiro nome, gostaria de dar a opção de inserir um segundo nome. Se "n" apenas pular para o local, se "y" for para o nome2 e depois para o local.

Foi útil?

Solução

Você tem que incluir as declarações entre o if e a else Dentro de colchetes { ... }.

Outras dicas

Você precisa adicionar aparelhos aqui:

if (additional == "Y") 
     cout << "Additional Name: ";
      getline(cin, Name2);
else
     cout << "Location: ";
     getline(cin, Location);

Tentar:

if (additional == "Y") 
{
     cout << "Additional Name: ";
     getline(cin, Name2);
}
// You could have an else here, but that would make location only happen if "additional" was not "Y"

 cout << "Location: ";
 getline(cin, Location);

Suspeito que você sempre queira que as seguintes linhas (obtendo localização) ocorram; portanto, neste caso, mais ninguém é necessário.

Você precisa incluir o corpo de if em aparelho para se livrar do erro. Pela aparência, você também precisa incluir o else corpo em aparelho:

if (additional == "Y") {
  cout << "Additional Name: ";
  getline(cin, Name2);
 } else {
  cout << "Location: ";
  getline(cin, Location);
 }

Você só pode descartar os aparelhos ({ e }) em torno de blocos quando o bloco contém exatamente uma declaração (algo que termina com um ponto e vírgula (;)) ou outra declaração com um bloco (if, for, while, etc).

Por exemplo, você pode fazer isso:

while (true)
    if (foo) {
        printf("Hello, ");
        printf("world\n");
    }

ou até

while (true)
    if (foo)
        for (i = 0; i < 10; i++) {
            printf("Hello, ");
            printf("World!\n");
        }

Mas em seu código, você precisa usar aparelhos desde o seu if a declaração contém duas declarações antes do else declaração. Portanto, o if Declaração termina após o cout linha.

O resultado final deve, portanto, parecer algo assim:

if (additional == "Y") {
   cout << "Additional Name: ";
   getline(cin, Name2);
}
else {
   cout << "Location: ";
   getline(cin, Location);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top