1

我编写了一个代码,使用构造函数将时间转换为分钟和秒。在输出中,我以秒为单位获得时间,但它没有以分钟为单位显示时间,并且无法弄清楚我的错误,所以任何人都可以帮助我......

#include<iostream>
using namespace std;

class Time
{
public:
    Time(int);
    Time(float);
};

Time::Time(int t)
{
    cout << "Time in seconds: " << t*60*60 << "\n";
}
Time::Time(float t)
{
    cout << "Time in Minutes: " << int(t*60) << "\n";
}

int main()
{
    int hr;
    cout << "Enter the time in Hours: ";
    cin >> hr;
    Time t1(hr);
    Time t2(float(hr));
}
4

4 回答 4

3

您的类型转换不正确。您需要通过将所需类型放在括号中来进行类型转换,而不是尝试将其用作函数。例如,您需要这样做:

Time t2((float) hr);

cout << "Time in Minutes: " << (int) t*60 << "\n";

虽然Time t2(float(hr));是合法的,但它是一个函数原型,因为这是一个令人烦恼的 parse。它等价于Time t2(float hr);,这意味着这t2是一个接受float称为“hr”并返回 a的函数Time。这没有任何影响,因为从未实现或调用过这样的函数。

如果这看起来很荒谬,这里有一种思考方式可以提供帮助。考虑这段代码:

Time t2 (float (*hr));

显然,这是一种完全正常的方式来声明t2一个函数,该函数接受一个指向float被称为“hr”的指针。那么,如果没有 ,它不应该也是合法的*吗?而 C++ 语法规则是,如果某物可以是原型,那么它就是。

于 2015-04-15T08:09:12.077 回答
1

应该有效:

Time t2((float)hr);
于 2015-04-15T08:41:42.410 回答
0
Time::Time(int hour){
    cout << "Time in seconds: " << hour*60*60 << "\n";
    cout << "Time in minutes: " << hour*60 << "\n";
}
于 2015-04-15T09:58:10.800 回答
-1

尝试添加

Time::Time(float t)
{
    cout << "Time in Minutes: " << float(t*60) << "\n";
}

告诉我它是否有效..

于 2015-04-15T08:08:12.490 回答