Enviado em 19/12/2016 - 00:05h
#include <cstdlib>Enviado em 19/12/2016 - 01:37h
Não se usa chaves { e } para blocos case em switch.switch (...) { case ... : comando1; comando2; comando3; break; case ... : comando1; comando2; comando3; break; ... default: comando1; comando2; comando3; break; }
Enviado em 19/12/2016 - 03:19h
switch (...) { case ... : comando1; comando2; comando3; break; case ... : comando1; comando2; comando3; break; ... default: comando1; comando2; comando3; break; }
Enviado em 19/12/2016 - 07:54h
Sua função menu() não deve ser um membro da classe base. Caso contrário, ficará difícil para você estendê-la com novos mamíferos, pois teria de criar na classe base dependências de cada nova classe filha.class mamifero { public: mamifero(){} virtual mamifero *reproduz() = 0; // Construtor virtual (e abstrato, para obrigar reimplementação em cada classe derivada). virtual std::string nome() = 0; virtual std::string som() = 0; }; class cachorro: public mamifero { public: cachorro *reproduz(){ return new cachorro; } std::string nome(){ return "cachorro"; } std::string som() { return "latido"; } }; class gato: public mamifero { public: gato *reproduz() { return new gato; } std::string nome(){ return "gato"; } std::string som() { return "miado"; } }; class homem: public mamifero { public: homem *reproduz() { return new homem; } std::string nome(){ return "homem"; } std::string som() { return "música"; } }; std::vector<mamifero *> opcoes{new homem, new cachorro, new gato}; std::vector<mamifero *> ecossistema; mamifero *menu(){ int n=0; std::cout << "Diga qual animal vai se reproduzir:\n"; for(const auto &animal: opcoes) std::cout << '\t' << n++ << ": " << animal->nome() << '\n'; std::cout << "--> "; std::cin >> n; return opcoes[n]->reproduz(); }
Enviado em 19/12/2016 - 16:02h
nao entendi bem essas linhas abaixo:Enviado em 19/12/2016 - 20:18h
Como eu queria, o programa que eu mostrei não tem nenhum erro.Enviado em 19/12/2016 - 20:31h
Enviado em 19/12/2016 - 20:39h
Talvez um código mais completo, incluindo uma função main() que faz uso das coisas mostradas, ajude você a entender o que eu propus. Só não sei se é uma solução que lhe atenda.#include <iostream> #include <vector> #include <string> #include <cctype> class mamifero { public: mamifero(){} virtual mamifero *reproduz() = 0; // Construtor virtual (e abstrato, para obrigar reimplementação em cada classe derivada). virtual std::string nome() = 0; virtual std::string som() = 0; }; class cachorro: public mamifero { public: cachorro *reproduz(){ return new cachorro; } std::string nome(){ return "cachorro"; } std::string som() { return "latido"; } }; class gato: public mamifero { public: gato *reproduz() { return new gato; } std::string nome(){ return "gato"; } std::string som() { return "miado"; } }; class homem: public mamifero { public: homem *reproduz() { return new homem; } std::string nome(){ return "homem"; } std::string som() { return "música"; } }; std::vector<mamifero *> opcoes{new homem, new cachorro, new gato}; std::vector<mamifero *> ecossistema; mamifero *menu(){ int n=0; std::cout << "Diga qual animal vai se reproduzir:\n"; for(const auto &animal: opcoes) std::cout << '\t' << n++ << ": " << animal->nome() << '\n'; std::cout << "--> "; std::cin >> n; std::cin.ignore(1, '\n'); return opcoes[n]->reproduz(); } int main(){ std::string resposta; while(true){ std::cout << "O ecossistema tem " << ecossistema.size() << " mamífero(s).\n"; if(ecossistema.size()>0) for(const auto &animal: ecossistema) std::cout << "\t- um " << animal->nome() << ", que emite " << animal->som() << ".\n"; std::cout << "\nQuer inserir um novo mamífero no ecossistema? "; getline(std::cin, resposta); std::cout << '\n'; if(tolower(resposta[0])!='s') break; ecossistema.push_back(menu()); std::cout << '\n'; } std::cout << "Ao final, o ecossistema tinha " << ecossistema.size() << " mamíferos.\n"; if(ecossistema.size()>0) for(const auto &animal: ecossistema) std::cout << "\t- um " << animal->nome() << ", que emite " << animal->som() << ".\n"; }
Enviado em 20/12/2016 - 09:56h
Resolver problemas de Internet
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Descritores de Arquivos e Swappiness
Solução rápida para o problema do Network Manager conectar mas não navegar
Como instalar no Linux Jogos da Steam só para Windows
Instalando o Team Viewer no Debian Trixie - problema no Policykit
Ajuda Pra Melhoria do NFTABLES. (2)
Menu configurações e mudar plano de fundo não funcionam (6)