为什么我的程序仍然无法解决外部问题?

时间:2015-12-03 15:09:34

标签: c++ visual-c++

当我尝试在Visual Studio中运行此代码时,我一直得到未解析的外部。

  

大学的结构时间分配

     

创建一个名为Time的结构,其中包含成员天,小时,分钟,   和秒作为整数。     创建Time实例并初始化成员。     创建一个函数来规范化添加值的时间。

     

例如,在为小时添加值后,请调用normalize   应该看小时的功能> 24。     如果是这样,请在天数成员中添加1,并通过减去24来重置小时数   从当前的价值。     做同样的分钟和秒数超过59。

     

您的主程序应该将值添加到小时,分钟和秒以及   在每个之后,调用normalize函数来正确设置值。

     

每次更新后输出成员。假设小时使用24小时   时钟。

#include <iostream>
using namespace std;

Struct time
{
int days = 0;
int hours = 0;
int minutes = 0;
int seconds = 0;

};

void normalize();

int main()
{
int clockRepeating;

for (clockRepeating = 0; clockRepeating < 150; clockRepeating++)
{
normalize();
}

return 0;
}

void normalize(Time &timenormalize)
{

if (timenormalize.days > 31)
timenormalize.days = 1;
if (timenormalizehours > 24)
{
timenormalize.hours = 0;
timenormalize.days++;
}
if (timenormalize.minutes > 59)
{
timenormalize.minutes = 0;
timenormalize.hours++;
}
if (time normalize.seconds > 59)
{
timenormalize.seconds = 0;
timenormalize.minutes++;
cout << timenormalize.days, timenormalize.hours, timenormalize.minutes, timenormalize.seconds;
}
else
timenormalize.seconds++;
cout << timenormalize.days, timenormalize.hours, timenormalize.minutes,timenormalize.seconds;

2 个答案:

答案 0 :(得分:1)

您为void normalize();声明的签名与此文件(void normalize(Time &timenormalize))中定义的签名不符。

答案 1 :(得分:1)

这是您的代码的固定版本。首先是编译错误:

  • Struct更改为structstruct是关键字,必须为小写;
  • Time中将struct time更改为void normalize(..):符号区分大小写:Time未声明,但struct time是;
  • 将遗失.添加到if (timenormalizehours)if (timenormalize.hours);
  • }添加到文件末尾(可能是复制/粘贴错误)。

然后是链接器错误undefined reference to 'normalize'

  • 将函数声明void normalize()更改为void normalize(struct time &):您声明没有参数的normalize函数,但使用一个参数定义

然后最后介绍了编译错误:

  • normalize();调用更改为normalize( mytime );,因为它需要一个参数
  • 并声明一个局部变量struct mytime作为参数传递。
#include <iostream>
using namespace std;

struct time
{
    int days = 0;
    int hours = 0;
    int minutes = 0;
    int seconds = 0;
};

void normalize(struct time &);

int main()
{
    int clockRepeating;
    struct time mytime;

    for (clockRepeating = 0; clockRepeating < 150; clockRepeating++)
    {
        normalize( mytime );
    }

    return 0;
}

void normalize(struct time &timenormalize)
{

    if (timenormalize.days > 31)
        timenormalize.days = 1;
    if (timenormalize.hours > 24)
    {
        timenormalize.hours = 0;
        timenormalize.days++;
    }
    if (timenormalize.minutes > 59)
    {
        timenormalize.minutes = 0;
        timenormalize.hours++;
    }
    if (timenormalize.seconds > 59)
    {
        timenormalize.seconds = 0;
        timenormalize.minutes++;
        cout << timenormalize.days, timenormalize.hours, timenormalize.minutes, timenormalize.seconds;
    }
    else
        timenormalize.seconds++;
    cout << timenormalize.days, timenormalize.hours, timenormalize.minutes,timenormalize.seconds;
}

它会打印一系列0。现在,您可以在struct time mytime中添加一些值。我希望这有帮助!