1

好吧,我试图修复这个程序,但我不断收到错误:

错误 1 ​​错误 LNK2019:函数 _main 中引用的未解析的外部符号“public: __thiscall ExcedeRangoInferior::ExcedeRangoInferior(void)”(??0ExcedeRangoInferior@@QAE@XZ)

错误 2 错误 LNK2019:函数 _main 中引用的未解析外部符号“public: __thiscall ExcedeRangoSuperior::ExcedeRangoSuperior(void)”(??0ExcedeRangoSuperior@@QAE@XZ)

代码如下:程序请求一个值,如果该值超出最小或最大范围,则抛出异常

    #include <iostream>
#include <exception>


class ExcepcionRango : public std::exception{
protected:

    ExcepcionRango();
public:
    virtual const char* lanzarExcepcion()=0;

};

class ExcedeRangoInferior : public ExcepcionRango{
public:
    ExcedeRangoInferior();
    const char* lanzarExcepcion() throw(){ //throw exception
        return "Value out of minimal range";
    }
};

class ExcedeRangoSuperior : public ExcepcionRango{
public:
    ExcedeRangoSuperior();
    const char* lanzarExcepcion() throw(){ //throw exception
        return "value out of maximal range";
    }
};

int obtainValue(int minimo, int maximo){ //obtain value

    int valor; //value
    std::cout<<"Introduce a value between "<<minimo<<" and "<<maximo<<" : "<<std::endl;
    std::cin>>valor;
    return valor;

};

int main(){
    ExcedeRangoSuperior* exS = new ExcedeRangoSuperior();
    ExcedeRangoInferior* exI= new ExcedeRangoInferior();
    int min=3; 
    int max=10;
    int valor=0; //value
    try{
        valor=obtainValue(min,max);
    }catch(int){
        if(valor<min){

            exS->lanzarExcepcion();
        }
        if(valor>max){

            exI->lanzarExcepcion();
        }
    }

    delete exS;
    delete exI;
    std::cin.get();
}

PD:这是一个家庭作业,它的目标是修复它的错误,让它正常运行,正如我在这里问的最后一件事所看到的那样,这段代码似乎可以显示更多错误,比如语法错误,也许是设计以及结构性错误。

4

1 回答 1

1

看起来您已经为所有异常类型声明了构造函数,但您还没有在任何地方定义这些构造函数。您收到链接器错误,指出未找到构造函数实现。尝试声明这些函数。例如:

ExcedeRangoInferior::ExcedeRangoInferior() {
     // Implement me!
}
ExcedeRangoSuperior::ExcedeRangoSuperior() {
     // Implement me!
}

希望这可以帮助!

于 2012-06-15T01:08:40.633 回答