c++异常与rtti的问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 15:36:16
由于代码有点长,请参考楼下叫“hylo2007”的代码,也就是本人!
>.\salesmain.cpp(67) : error C2440: “初始化”: 无法从“kp::Sales::bad_index *”转换为“kp::LabeledSales::nbad_index *”
1> 从基类型到派生类型的强制转换需要 dynamic_cast 或 static_cast
提示这里出错,麻烦高手讲解哈怎么做,还有原理!

头文件,
#pragma once
#ifndef SALES_H_
#define SALES_H_
#include<stdexcept>
#include<cstring>
namespace kp{
//////////////////class Sales//////////////
class Sales{
protected:
enum{MONTHS=12};
private:
double gross[MONTHS];
int year;
public:
class bad_index:public std::logic_error{ ////class bad_index
private:
int bi;
public:
explicit bad_index(int ix,const char *s="index error in salse object!");
virtual int bi_val()const {return bi;}
};
explicit Sales(int yy=0);
Sales(int yy,const double *gr,int n);
virtual ~Sales() {}
int year_val()const {return year;}
virtual double operator[](int i)const throw(std::logic_error);
virtual double &operator[](int i) throw(std::logic_error);
};
//////////////class LabeledSalse ///////
class LabeledSales:public Sales{