今天敲的比较长的一个项目就书上的Employee
计算员工薪资的,算是类继承的一个实例
后来在一个text函数里输入的时候出现了一点问题
用基类定义的指针去调用派生类函数的时候忽然说出错了
void test1()
{
cout<<setiosflags(ios::fixed|ios::showpoint)<<setprecision(2);
Manager m1(1035,"xiaoting",1200);
Manager m2(1020,"pengpeng");
m2.setMonthlySalary(390000);
Employee *basePtr; //使用抽象类指针,调用派生类版本的函数
basePtr=&m1;
basePtr->print();
basePtr=&m2;
basePtr->print();
}
错误提示是说“不能把manager类型的值分配到Employee类型的实体”
回去两个定义类的头文件查了一下,没有忘记继承
Employee类和manager类是分别放在两个头文件里的,我试着把这两个类都放在主文件里面,错误就消失了
这样看来问题不在代码上。应该是调用类的时候出错了
我只是一个菜鸟,能最快想到的也就是文件用中文名导致出错
果断把“头文件”改成了“head”,把“源文件”改成了“cpp”,结果是。。。。木有用!红色波浪又出来了
不死心,于是又用了个跟上面那个有同工异曲之妙的方法。。把两个头文件放到源文件的文件夹里。。还是木有用!
那就只能追本溯源地去找问题了,首先是employee的cpp文件,组建过程中出现了很多错误,但是众所周知很多时候一大堆错误都只是由一个错误引出来的
所以我直接瞄准第一个,说employee的class重定义了
好吧,我多手给每个用来定义派生类的头文件都加上了#include"Employee.h"。。难怪重定义了
删掉之后再给employee.cpp组建一次,成功了~~~~~~~~~~~~~~~
再回去main.cpp里面看。。~红色波浪消失了!!!!