我正在尝试编写一个程序来告诉用户两次输入之间的差异。我不确定该怎么做。我得到了错误:

第27行|错误:类型为'int'和'const MyTime *'的无效操作数为二进制'operator-'|

| 39 |错误:无法将参数'1'的'MyTime'转换为'const MyTime *'到'int defineElapsedTime(const MyTime *,const MyTime *)'|

在这个问题上,我也需要很多帮助。我的课程不够好,我的课堂教科书就像编程的悬崖笔记。这是我这所大学的最后一堂课。我使用的C ++ Teztbook(我自己不是上课的)是Sam一天一小时的C ++。

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

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

long t1, t2;

int DetermineElapsedTime(const MyTime *t1, const MyTime *t2)
{
    return((int)t2-t1);
}


int main(void)
{
    char delim1, delim2;
    MyTime tm, tm2;
    cout << "Input two formats for the time. Separate each with a space. Ex: hr:min:sec\n";
    cin >> tm.hours >> delim1 >> tm.minutes >> delim2 >> tm.seconds;
    cin >> tm2.hours >> delim1 >> tm2.minutes >> delim2 >> tm2.seconds;

    DetermineElapsedTime(tm, tm2);

    return 0;

}


我必须先修复错误。有人有想法么??

最佳答案

请看一下DetermineElapsedTime的实现。

struct MyTime { int hours, minutes, seconds; };

...

int DetermineElapsedTime(const MyTime *t1, const MyTime *t2)
{
    return((int)t2-t1);
}


编译器应如何理解该行的含义

    return((int)t2-t1);


您不能简单地减去两个结构。您必须自己实现。

编辑:

更好地使用

int DetermineElapsedTime(MyTime &t1, MyTime &t2)


这更像是C ++。

我最终(仍然很丑陋,但目前仅剩下主要问题)

您仍然需要找到一种解决方案,用于在MyTime结构中减去数据。

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

using namespace std;
struct MyTime { int hours, minutes, seconds; };


int DetermineElapsedTime(MyTime &t1, MyTime &t2)
{
    // TODO: This is not correct! Implement the correct way.
    return((int)t2-t1);
}

int main(void)
{
    char delim1, delim2;
    MyTime tm, tm2;
    cout << "Input two formats for the time. Separate each with a space. Ex: hr:min:sec\n";
    cin >> tm.hours >> delim1 >> tm.minutes >> delim2 >> tm.seconds;
    cin >> tm2.hours >> delim1 >> tm2.minutes >> delim2 >> tm2.seconds;

    DetermineElapsedTime(tm, tm2);

    return 0;

}

10-04 15:09