静态之前的预期主要表达式?必须使用常量指针
Expected primary expression before static? Constant pointer must use
由于作业的某些限制,我无法更改此代码中的很多内容。这是代码:
#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);
}
这不是全部,但我需要以某种方式计算从主要输入到另一个输入的时间量。我也需要使用设置填充。
无论如何,有谁知道如何解决在静态之前需要主表达式的错误?
你想写的东西(我认为)更像
MyTime DetermineElapsedTime(const MyTime *t1, const MyTime *t2)
{
MyTime var = { ...... };
return var;
}
那条线的静态背后的意图是什么?如果您多次调用此函数,这将导致问题,因为该行在程序的生命周期内只会执行一次(如果您输入static
),因此会给出错误的答案。
返回类型也已关闭。您需要按照@mux解释修复->
/.
编辑:您使用的是构造器语法,但没有为 MyTime 定义构造函数,我认为您需要使用MyTime var = {...}
语法而不是MyTime var(...)
这段代码中有很多问题。
首先,不能返回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;
您忘记了变量的类型和名称,似乎您想要两个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
变量将被初始化一次,并且每次都返回相同的值。
相关文章:
- 将常量指针引用绑定到非常量指针
- 如何使用数据对象上的常量指针初始化类
- C++中的指针和常量问题不大
- 为什么我收到"从常量指针到指针的转换无效?
- 当成员值从指针更改为非指针时,C++常量问题
- 使用双指针传递 2D 常量数组
- C++/QT:使用指向私有成员的常量指针作为只读数据共享
- 空指针常量 (nullptr)、空指针值和空成员指针值之间有什么区别?
- 模板推导:为什么函数指针模板定义在常量和/或引用时不匹配?
- 初始化指针的常量向量
- 区分接受常量参数的函数引用/指针和与函数参数同名的非常量参数
- 什么是常量指针常量引用类型的参数?(const X* const & p)
- 无法将"常量指针常量"传递给常量引用
- C++:如何创建一个临时对象,包含一个指针 - 常量或非常量,具体取决于上下文
- 具有函数指针常量数组的 C++ 模板化静态类
- 这个constexpr整数不是空指针常量吗
- 使指针常量C++
- C++11在stl容器中共享指针常量
- 空指针常量转换为右值
- 在参考 (T&) 和常量指针 (T* 常量) 之间进行选择