经编译,你的第一个和补充的类都是对的,如果有问题那就是是你的public写错了。第二个却错了。
重定义中,类中的重定义只在该类中生效。类外面的从定义则对非重定义的类外生效。如:
typedef double Money;
class Aount {
typedef long double Money;
Money bal; //long double
};
Money bal; //double
所以你的第一个是没有问题的。但是第二个类中,就混淆了,主要看这个函数:
Type Exercise::setval(Type parm){ //返回值类型的Type是类外面重定义的,是string
val =parm+initval();
} //返回(虽然你没有返回- -!)的是类里面重定义的double,不匹配
重定义最好不要用重复的名字,太容易搞错了。
祝你学习愉快!