c++ excepçoes

goku_san

Power Member
podem me dar uma ajuda nisto ?


Complete/altere o programa seguinte de modo a tratar as possíveis excepções.
Se uma excepção do tipo "impossibilidadeDesportiva" ocorre, deve ser escrito o nome do clube que originou essa ocorrência. Deve implementar também a classe "impossibilidadeDesportiva".
Código:
#include <iostream>
#include <exception>
#include <string>

using namespace std;

class Clube {
string nome;
bool campeao;
public:
Clube() { campeao=false;nome="";}
void setNome(string s){ nome=s;}
void setCampeao(bool b)
{
string e="porto";
if(b==true && nome.compare("FCPorto"))
throw impossibilidadeDesportiva(nome);
campeao=b;
}
string getNome() const {return nome;}

};

class impossibilidadeDesportiva{
public:
string clube;
impossibilidadeDesportiva(string club){clube = club;}

};

int main() {
Clube c1, c2, c3;
c1.setNome("FCPorto");
cout << "Nome do Clube: " << c1.getNome() << endl;
c2.setNome("Guimaraes");
cout << "Nome do Clube: " << c2.getNome() << endl;
c3.setNome("Sporting");
cout << "Nome do Clube: " << c3.getNome() << endl;

try {c1.setCampeao(true);
}
catch (impossibilidadeDesportiva e) {
cout << e.clube << endl; 
}
try {c2.setCampeao(true);
}
catch (impossibilidadeDesportiva e) {
cout << e.clube << endl; 
}
try {c3.setCampeao(true);
}
catch (impossibilidadeDesportiva e) {
cout << e.clube << endl; 
}
}
 
Primeiro tens que criar uma instância da classe impossibilidadeDesportiva.
Vê lá se isto funciona:
Código:
throw new impossibilidadeDesportiva(nome);
 
Assim já funciona.. a única diferença foi ter definido void setCampeao(bool b) fora da classe.. nao sabia que havia diferenças nisso..


Código:
#include <iostream>
#include <exception>
#include <string>
using namespace std;
class Clube {
string nome;
bool campeao;
public:
Clube() { campeao=false;nome="";}
void setNome(string s){ nome=s;}
void setCampeao(bool b);
string getNome() const {return nome;}
};
class impossibilidadeDesportiva{
public:
string clube;
impossibilidadeDesportiva(string club){clube = club;}
};
void Clube::setCampeao(bool b) {
if(b==true && nome.compare("FCPorto"))
throw impossibilidadeDesportiva(nome);
campeao=b;
}
int main() {
Clube c1, c2, c3;
c1.setNome("FCPorto");
cout << "Nome do Clube: " << c1.getNome() << endl;
c2.setNome("Guimaraes");
cout << "Nome do Clube: " << c2.getNome() << endl;
c3.setNome("Sporting");
cout << "Nome do Clube: " << c3.getNome() << endl;
try {c1.setCampeao(true);
}
catch (impossibilidadeDesportiva e) {
cout << e.clube << endl; 
}
try {c2.setCampeao(true);
}
catch (impossibilidadeDesportiva e) {
cout << e.clube << endl; 
}
try {c3.setCampeao(true);
}
catch (impossibilidadeDesportiva e) {
cout << e.clube << endl; 
}
}
 
Back
Topo