将时间转换为分钟和秒

Convert time into minutes and seconds

本文关键字:分钟 时间 转换      更新时间:2023-10-16

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

#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));
}

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

Time t2((float) hr);
cout << "Time in Minutes: " << (int) t*60 << "n";

虽然Time t2(float(hr));是合法的,但它是一个函数原型,因为这是一个令人烦恼的解析。它等价于Time t2(float hr);,这意味着t2是一个函数,它接受一个名为"hr"的float并返回一个Time。这没有任何效果,因为这样的函数永远不会实现或调用。

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

Time t2 (float (*hr));

显然,这是一种将t2声明为函数的完全正常的方式,该函数将指针指向名为"hr"的float。好吧,没有*也不应该合法吗?语法规则C++是,如果某物可以成为原型,那就是原型。

应该有效:

Time t2((float)hr);
Time::Time(int hour){
    cout << "Time in seconds: " << hour*60*60 << "n";
    cout << "Time in minutes: " << hour*60 << "n";
}

尝试添加

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

告诉我它是否有效..