【问题标题】:Convert time into minutes and seconds将时间转换为分钟和秒
【发布时间】:2015-04-15 07:58:06
【问题描述】:

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

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

【问题讨论】:

  • 能否请您添加您的输出。
  • OUTPUT:sh-4.2# g++ -std=c++11 -o main *.cpp sh-4.2# main 以小时为单位输入时间:4 以秒为单位的时间:14400 sh-4.2# g++ -std=c++11 -o main *.cpp
  • 不是类的用途。
  • @Light 至少很有创意……无效但很有创意

标签: c++ oop most-vexing-parse


【解决方案1】:

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

Time t2((float) hr);

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

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

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

Time t2 (float (*hr));

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

【讨论】:

  • 我认为 int(..) 是整数类型的构造函数?为什么这里对我们不正确?
  • 例如在 int(..) 或 (int) .. 之前似乎没有区别? cplusplus.com/doc/tutorial/typecasting(正如刚刚被删除的评论中指出的那样)
  • 但是我们使用构造函数来获取时间。并且它没有显示它是一个构造函数,并且变量也没有像这样声明......??
  • 您的类型转换不正确。您需要通过将所需类型放在括号中来进行类型转换,而不是尝试将其用作函数。 - 函数式编程转换等价于 c 转换
【解决方案2】:

应该有效:

Time t2((float)hr);

【讨论】:

    【解决方案3】:
    Time::Time(int hour){
        cout << "Time in seconds: " << hour*60*60 << "\n";
        cout << "Time in minutes: " << hour*60 << "\n";
    }
    

    【讨论】:

      【解决方案4】:

      尝试添加

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

      告诉我它是否有效..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-02
        • 1970-01-01
        • 2020-09-04
        • 1970-01-01
        • 1970-01-01
        • 2012-01-06
        相关资源
        最近更新 更多