0

由于分配的某些限制,我无法更改此代码中的很多内容。这是代码:

#include <iostream>
#include<cstdlib>
#include<cstring>

using namespace std;
struct MyTime { int hours, minutes, seconds; };
int DetermineElapsedTime(const MyTime *t1, const MyTime *t2);
const int hourSeconds = 3600;
const int minSeconds = 60;

int DetermineElapsedTime(const MyTime *t1, const MyTime *t2)
{//problem about static in next line
    static MyTime ((long) (((t2.hours * hourSeconds) + (t2.minutes * minSeconds) +  t2.seconds) -
                   ((t1.hours * hourSeconds) + (t1.minutes * minSeconds) + t1.seconds)));
    return(MyTime);
}

这不是全部,但我需要以某种方式计算从主要输入到另一个输入的时间量。我也需要使用 setfill。

无论如何,有谁知道如何解决在静态之前需要主表达式的错误?

4

3 回答 3

2

你想写的(我认为)更像

MyTime DetermineElapsedTime(const MyTime *t1, const MyTime *t2)
{
    MyTime var = { ...... };
    return var;
}

那条线上的静电背后的意图是什么?如果您多次调用此函数,这将导致问题,因为该行将在程序的生命周期内仅执行一次(如果您放static),因此会给出错误的答案。

返回类型也关闭了。你需要像@mux解释的那样修复->/.

编辑:您使用的是构造函数语法,但没有为 MyTime 定义构造函数,我认为您需要使用MyTime var = {...}语法而不是MyTime var(...)

于 2012-11-12T05:56:24.427 回答
1

您忘记了变量的类型和名称,似乎您想要两个MyTime对象之间的差异,差异似乎返回为intnot in a new MyTime

int t = ((int) (((t2->hours * hourSeconds) + (t2->minutes * minSeconds) +  t2.seconds) - ((t1->hours * hourSeconds) + (t1->minutes * minSeconds) + t1->seconds)));
return(t);

此外,t1andt2是指针,所以使用->而不是.访问成员,如果使用static变量,则将初始化一次,并且每次都返回相同的值。

于 2012-11-12T05:57:19.347 回答
1

这段代码有很多问题。

首先,你不能返回一个struct类型,你需要返回一个变量。

创建静态变量时,您没有给它命名并使用=符号。

使用指针时,您需要使用->而不是.

现在,您的代码中的逻辑将为您提供以秒为单位的差异,然后您需要将其转换为适当的小时、分钟和秒以填充 MyTime 变量。这是一个如何计算时间的示例(未经测试,只是一个示例):

int difference = (t2->hours * hoursSeconds + t2->minutes * minSeconds + t2->seconds) - (t1->hours * hoursSeconds + t1->minutes * minSeconds + t1->seconds); // this gives you a difference in seconds
int hoursDifference = difference / hoursSeconds; // how many full hours we have
difference -= hoursDifference * hoursSeconds; // remove from total what we just computed
int minsDifference = difference / minsSeconds; // how many full minutes we have
difference -= minsDifference * minsSeconds;
MyTime diff;
diff.hours = hoursDifference;
diff.minutes = minsDifference;
diff.seconds = difference;
return diff;
于 2012-11-12T06:04:48.657 回答