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
对象的差值。如果那是你的问题