我正在使用Turbo C编写以下代码,但出现1条错误和2条警告:
第30行警告:包含while的函数不会内联展开
错误:预期输入名称
第48行警告:包含while的函数不会内联展开
请帮助我。我猜编译器是Borland。
host1.dept1.domain.com
host2.domain.com
host3.domain3.com
答案 0 :(得分:0)
您可以忽略两个警告,它们只是警告。您正在实现要内联的类方法,但是编译器不会内嵌带有while
循环的内联方法,因此它们不会内联在最终的可执行文件中。没关系,内联只是一种优化,方法仍然可以使用。话虽这么说,您根本不需要在此代码中使用任何while
循环。在计算值时,可以通过/
(除法)和%
(模)运算符来使用简单的整数算术。
不过,我的代码确实还有其他一些问题。
您需要将<iostream.h>
更改为<iostream>
,然后在cin
和cout
的前面加上std::
。
<conio.h>
是非标准头,应该完全避免使用它。 clrscr()
没有标准的C ++替代品,您必须诉诸特定于平台的API(对于Windows,请参见Clearing the Screen),但是您可以使用std::cin.get()
替代{{1 }}。
getch()
被卡在用户无休止的循环中,用户输入的值> =60。您没有像在min::convert()
中那样在每次循环迭代中递减sec
。 >
对于hour::convert1()
宏和min
算法,C运行时库和C ++标准库中已经使用了标识符min()
,因此应重命名std::min()
进行更独特的设计。
尝试以下方法:
min
答案 1 :(得分:0)
好的-我知道了。我在第38行中错误地键入了'public main'而不是'public min'。我也删除了while语句中的1并对其进行了一些修改,因为该代码在60秒以上的输入中没有显示输出。这是工作的经过修改的(某种程度上)代码。
#include <iostream.h>
#include <conio.h>
class second
{
protected:
int sec;
public:
second()
{
sec = 0;
}
void getsec()
{
cout << "\n enter the second time:";
cin >> sec;
}
};
class min : public second
{
protected:
int mini;
public:
min()
{
mini = 0;
}
void convert()
{
getsec();
mini = sec / 60;
sec %= 60;
}
};
class hour : public min
{
protected:
int hr;
public:
hour()
{
hr = 0;
}
void convert1()
{
convert();
while (mini >= 60)
{
mini = mini - 60;
hr = hr + 1;
}
cout << "hr:" << hr << "\t mini" << mini << "\t sec" << sec;
}
};
int main()
{
clrscr();
hour h;
h.convert1();
getch();
return 0;
}
感谢所有人(尤其是@Remy Lebeau)的帮助。