0

我正在尝试编写一个程序来说明用户输入的两次之间的差异。我不知道该怎么做。我得到错误:

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

第 |39 行|错误:无法将参数 '1' 的 'MyTime' 转换为 'const MyTime*' 到 'int determineElapsedTime(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;

}

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

4

1 回答 1

1

请查看您的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;

}
于 2012-11-12T05:06:57.400 回答