7.33 pos位于类的作用域之外,无法直接使用,应改为Screen::pos。
7.34 放在最后一行无法通过编译,声明中使用的名字,包括返回类型和参数列表使用的名字,都必须在使用前确保可见。
7.35
typedef string Type;
Type iniVal(); //Type为string
class Exercise {
public:
typedef double Type;
Type setVal(Type); //返回类型和形参类型都使用类内声明,为double
Type iniVal(); //隐藏了类外部定义的iniVal()
private:
int val;
};
/* 返回类型Type使用了类外部的声明,为string,
应该使用Exercise::Type
参数Type已经处于类作用域内,为double
*/
Type Exercise::setVal(Type parm)
{
val = parm + initVal(); //initVal使用类成员函数iniVal()
return val;
}
7.36 初始化顺序与它们在类定义中出现的顺序一致,rem先初始化,此时base未初始化,应使用rem(i % j),或者调换rem和base定义的次序。
7.37 first_item使用接受std::istream&参数的构造函数;next使用默认构造函数,即使用默认实参""的构造函数,其他成员为0;last和next使用相同的构造函数,使用传入的实参"9-999-99999-9",其他成员为0.</