我的老师让班级修复这个程序中的错误。其实这似乎是一个糟糕的程序,我只是在表格中输入它的方式,并得到这个错误:C++修复编程练习
嗯现在我只是改变一些东西,但在运行时得到这个异常:Microsoft C++异常:[rethrow]在内存位置0x00000000。 。
的代码现在像这样:(变量的类名称现在是西班牙,遗憾的inconviniences)
#include <iostream>
#include <exception>
#include <stack>
using namespace std;
class EPilaVacia : public exception{
public:
const char* what() const throw(){
return "Error: Pila Vacía";
}
};
template <class T, int max=100>
class Pila{
private:
stack<T*> *pila;
int cont;
public:
Pila() : cont(0){
pila=new stack<T*>();
}
virtual void apilar(T* pt){
if(cont<max){
pila->push(pt); //respuesta 2
}
}
virtual void apilar(T t){
if(cont<max){
pila->push(&t); //respuesta 3
}
}
T tope() const throw (EPilaVacia){
if(cont>0){
pila->top(); //respuesta 4
}else{
throw ; //respuesta 5
}
}
T& desapilar() throw (EPilaVacia){
if(cont>0){
pila->pop(); //respuesta 6
}else{
throw ; //respuesta 7
}
}
int size() const{
return pila->size();
}
};
class Figura{
public:
virtual void print(){
cout<< "FIGURA" <<endl;
}
};
class Circulo : public Figura{
public:
void print(){
cout<<"CIRCULO"<<endl;
}
};
class Triangulo : public Figura{
public:
void print(){
cout<<"TRIANGULO"<<endl;
}
};
int main(){
Pila<Figura*> *pfiguras= new Pila<Figura*>();
pfiguras->apilar(new Circulo());
pfiguras->apilar(new Triangulo());
Pila<Figura*> pfiguras2(*pfiguras);
pfiguras->tope()->print();
pfiguras->desapilar();
pfiguras->tope()->print();
pfiguras->desapilar();
pfiguras2.tope()->print();
system("Pause");
return 0;
}
我看到一个错误:没有很好的理由调用析构函数。另外,你的老师不应该告诉你使用'system(“PAUSE”);'。 – chris
是的,系统(“暂停”)是我们需要修复的东西之一 – dlvx
这是以前的学生作业吗? : - /(我同意你的'蹩脚的'评估。) – ildjarn