观察下列代码是否有错误
typedef string Type;
Type initVal();
class Exercise
{
public:
typedef double Type;
Type setVal(Type);
Type initVal(); //只有声明,没有定义,在后续使用中会报错
private:
int val;
};
//这里函数的返回类型为全局作用域下的string,与return val类型冲突
Type Exercise::setVal(Type parm)
{
val = parm + initVal(); //initVal()没有定义,报错
return val;
}
改正后:
typedef string Type;
Type initVal();
class Exercise
{
public:
typedef double Type;
Type setVal(Type);
Type initVal()
{
return 1;
}
private:
int val;
};
Exercise::Type Exercise::setVal(Type parm)
{
val = parm + initVal();
return val;
}