我已经纠正了下面程序中的错误,但仍然是混合输出。更新的结果如下。请指教。
我将不胜感激任何帮助。相关的代码部分是:
string student::standing() const
// post: use selection to return the current standing as either
// Freshman, Sophomore, Junior, or Senior.
{
cout << "Freshman";
if (my_credits <= 60.00);
{cout << "Sophomore";}
if (my_credits <= 90.00);
{cout << "Junior";}
if (my_credits >= 90.00);
else
{ cout << "Senior";}
}
string student::name() const
// post: return the student's name
{
{return my_name;}
}
答案 0 :(得分:2)
嗯,首先你的标题引用一个错误而你的问题显示另一个错误。两者都是合法的,所以让我们解决这两个问题,不管吗?
问题是C4716错误消息告诉你完全错误是什么:你只需要阅读它。它表示函数student::standing()
声称返回string
但没有。当然,这不是唯一的问题。您声称的另一个问题是C2134(但很可能是C4390)是因为您在if
之后放了一个分号,这是不对的。这段代码:
if(my_credits <= 60.00);
{cout << "Sophomore";}
与此代码相同:
if(my_credits <= 60.00)
/* do nothing if my_credits are less than or equal to 60 */
{
/* and then always print "Sophomore" */
cout << "Sophomore";
}
您真正想要的是这样的:
string student::standing() const
{
if(my_credits >= 90.00)
return "Senior";
if(my_credits >= 60.00)
return "Junior";
if(my_credits >= 30.00)
return "Junior";
return "Freshman";
}
为了将来参考,如果您在Google上搜索了C4390,那么您将登陆an MSDN page describing this error,其中包含问题的确切描述以及您所犯的错误。
同样地,如果您使用Google搜索了C4716,那么您将登陆another MSDN page describing that error,这又包含了一个与您的错误非常接近的示例。
最后,在此代码中:
string student::name() const
{
{return my_name;}
}
那些额外的花括号有什么意义?他们并没有真正伤害任何东西,但他们只是没有任何可想象的目的,除了混淆。删除它们:
string student::name() const
{
return my_name;
}