c++中的时间函数引用

Posted

技术标签:

【中文标题】c++中的时间函数引用【英文标题】:time function in c++ by reference 【发布时间】:2021-07-20 11:44:39 【问题描述】:

我正在研究一个相应地重写时间结构值的函数(如果分钟为 128,它将更改为 2 小时 8 分钟)

现在不要太在意实际功能,我的问题似乎出在声明/参数/结构本身。

错误:

    错误(活动)E0070 不允许不完整类型 错误(活动)E0266“时间”不明确 错误(活动)E0065 预期为 ';'

我做错了什么?

谢谢。

#include<iostream>
#include<iomanip>
//#include<math.h>
//void canonify(time&);
using namespace std;
//
typedef struct time

    int h, min, sec;
;
//
const int full = 60;
//
void canonify(time& pre)  // eror1 and eror2
                         // eror3
pre.min += pre.sec / full;
pre.h += pre.min/ full;
pre.sec %= full;
pre.min %= full;

void main()

    time a;
    a.h = 3;
    a.min = 128;
    a.sec = 70;
    canonify(a);
    cout << a.h <<":"<< a.min <<":"<< a.sec << endl;

【问题讨论】:

在我看来逻辑也是错误的:而不是“second = minutefull - pre.sec;”,应该是“second = pre.sec - minute我>满了;"或者只是“秒 = pre.sec % full;” "typedef struct" 在 C++ 中毫无意义。摆脱它。您使用的是哪本 C++ 教科书,它提供了错误的代码示例?这是一本糟糕的教科书,你应该换一本。 void main 已被弃用很长时间,请使用 int main() 并将可接受的值返回给环境 (return 0;)。 【参考方案1】:

结构名称“时间”导致冲突。您可以将结构的名称更改为其他名称,并将 typedef 结构替换为仅结构,否则编译器本身将忽略它。

这段代码对我有用。

#include <iostream>
#include <iomanip>
//#include<math.h>
//void canonify(ti&);
using namespace std;
//
struct ti                               //change

    int h, min, sec;
;
//
const int full = 60;
//
void canonify(ti &pre)                 //change

    int hour;
    int minute;
    int second;
    minute = pre.sec / full;
    second = minute * full - pre.sec;
    hour = pre.min / full;
    minute = hour * full - pre.min;
    pre.h = hour;
    pre.min = minute;
    pre.sec = second;

int main()

    ti a;                              //change
    a.h = 3;
    a.min = 128;
    a.sec = 70;
    canonify(a);
    cout << a.h << ":" << a.min << ":" << a.sec << endl;

【讨论】:

以上是关于c++中的时间函数引用的主要内容,如果未能解决你的问题,请参考以下文章

如何编写工厂函数来初始化 C++ 中的 constexpr 引用?

如何在 C++ 中引用类结构中的函数?

C++的引用

c++ - 如何使用构造函数中的'this'初始化其他类中的引用

如何将右值引用参数传递给 C++ 中的模板 operator() 函数?

C++ 指针、引用和函数调用