C++ 静态之前需要主表达式吗?常量指针必须使用

C++ 静态之前需要主表达式吗?常量指针必须使用,c++,static,struct,C++,Static,Struct,由于作业的某些限制,我无法更改代码中的很多内容。代码如下: #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 hour

由于作业的某些限制,我无法更改代码中的很多内容。代码如下:

#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);
}
#包括
#包括
#包括
使用名称空间std;
结构MyTime{int小时,分钟,秒;};
int determinateeReleasedTime(常量MyTime*t1,常量MyTime*t2);
常数int hourSeconds=3600;
const int minSeconds=60;
int determinateeReleasedTime(常量MyTime*t1,常量MyTime*t2)
{//关于下一行中的静态问题
静态MyTime((长)((t2.hours*hourSeconds)+(t2.minutes*minSeconds)+t2.seconds)-
((t1.hours*hourSeconds)+(t1.minutes*minSeconds)+t1.seconds));
返回(MyTime);
}
这不是全部,但我需要以某种方式计算从主要输入到其他输入的时间量。我也需要用setfill

不管怎样,有人知道如何修复静态之前需要一个主表达式的错误吗?

你想写的(我认为)更像是

MyTime DetermineElapsedTime(const MyTime *t1, const MyTime *t2)
{
    MyTime var = { ...... };
    return var;
}
在这一行中,静电背后的意图是什么? 如果您多次调用此函数,则会出现问题,因为该行在程序的生命周期内只执行一次(如果将
置于static
),因此会给出错误的答案

此外,返回类型已关闭。正如@mux所解释的,您需要修复
->
/

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

您想要写的(我认为)更像

MyTime DetermineElapsedTime(const MyTime *t1, const MyTime *t2)
{
    MyTime var = { ...... };
    return var;
}
在这一行中,静电背后的意图是什么? 如果您多次调用此函数,则会出现问题,因为该行在程序的生命周期内只执行一次(如果将
置于static
),因此会给出错误的答案

此外,返回类型已关闭。正如@mux所解释的,您需要修复
->
/


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

您忘记了变量的类型和名称,似乎您想要两个
MyTime
对象之间的差异,差异似乎以
int
返回,而不是以新的
MyTime
返回:

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

另外,
t1
t2
是指针,因此使用
->
而不是
来访问成员,如果使用
static
,变量将初始化一次,每次返回相同的值。

您忘记了变量的类型和名称,似乎您需要两个
MyTime
对象之间的差异,该差异似乎以
int
的形式返回,而不是以新的
MyTime
的形式返回:

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

另外,
t1
t2
是指针,因此使用
->
而不是
来访问成员,如果使用
静态
,变量将初始化一次,每次都返回相同的值。

这段代码中存在许多问题

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

创建静态变量时,未能为其命名并使用
=
符号

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

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


这段代码中有很多问题

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

创建静态变量时,未能为其命名并使用
=
符号

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

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


这没有多大意义。。。你正在返回一个类型,我的时间,当你应该返回一个类型时,我还在学习。知道我为什么会投反对票吗?这没什么意义。。。你正在返回一个类型,我的时间,当你应该返回一个类型时,我还在学习。知道我为什么投反对票吗?老实说,这是一位教授的暗示。我不完全理解他的方式。老实说,这是一位教授的暗示。我不完全理解他的方式。如果我被正确地教导,我就不会问这些问题。非常感谢。我的演讲全是空谈,没有代码…不可能从int t转换为int tMyTime@emartel函数不返回
MyTime
对象,而是返回
int
第一行不是结构初始化语法,它只是计算两个
MyTime
对象的差值。如果这是你的反对票,请删除它。我确实删除了它,在查看评论时,我偶然发现了Karthik的解决方案,并将其误读为OPfunction@emartel没关系,这两个答案都是有效的。您可以将差值作为
int
MyTime
结构返回,但在OP的问题中,计算并返回
int
。如果正确地教授我,我就不会问这些问题。非常感谢。我的演讲全是空谈,没有代码…不可能从int t转换为int tMyTime@emartel函数不返回
MyTime
对象,而是返回
int
第一行不是结构初始化语法,它只是计算两个
MyTime
对象的差值。如果那是你的问题