gpt4 book ai didi

c++ - 函数未接收到值

转载 作者:行者123 更新时间:2023-11-30 01:18:15 25 4
gpt4 key购买 nike

因此,我正在尝试制作一个程序,它采用一些随机数的输入秒数并将其转换为天、小时、分钟和秒。我必须使用符号常量来定义一天中的小时数、小时中的分钟数和分钟中的秒数。我传递了值(value),但没有收到,所以我最终得到了一些巨大的负数。这是代码。如果有人能告诉我问题出在哪里,我将不胜感激。

我使用函数定义代码中的随机代码位来计算总秒数,看看是否收到了它,但没有收到。

#ifndef SECONDS_H_
#define SECONDS_H_

#define HOURS_IN_DAY 24
#define MINUTES_IN_HOUR 60
#define SECONDS_IN_MINUTES 60

#include <iostream>

using namespace std;

class Seconds
{
private:
long totalSeconds;
public:
Seconds();
~Seconds(){};
Seconds(int totalSeconds);
void Seconds::convertSeconds(int &days, int &hours, int &minutes, int &seconds);
};

#endif

...

#include <conio.h>
#include <string>
#include <iostream>
#include "seconds.h"

#define HOURS_IN_DAY 24
#define MINUTES_IN_HOUR 60
#define SECONDS_IN_MINUTE 60

Seconds::Seconds(int totalSeconds)
{
totalSeconds = totalSeconds;
}

void Seconds::convertSeconds(int &days, int &hours, int &minutes, int &seconds)
{
cout << endl;
cout << "Total Seconds: " << totalSeconds;
cout << endl;

days = totalSeconds / MINUTES_IN_HOUR / SECONDS_IN_MINUTE / HOURS_IN_DAY;
hours = (totalSeconds / MINUTES_IN_HOUR / SECONDS_IN_MINUTE) % HOURS_IN_DAY;
minutes = (totalSeconds / MINUTES_IN_HOUR) % SECONDS_IN_MINUTE;
seconds = (totalSeconds % SECONDS_IN_MINUTE);

}

...

#include <iostream>
#include <conio.h>
#include <string>
#include "seconds.h"

#define HOURS_IN_DAY 24
#define MINUTES_IN_HOUR 60
#define SECONDS_IN_MINUTES 60

using namespace std;

int main ()
{
int totalSeconds;
int days = 0, hours = 0, minutes = 0, seconds = 0;

cout << "Enter a random massive amount of seconds: ";
cin >> totalSeconds;

Seconds sec(totalSeconds);

sec.convertSeconds(days, hours, minutes, seconds);

cout << "That is equivalent to " << days << " days, " << hours << " hours, " << minutes << " minutes, " << seconds << " seconds." << endl;

cout << "Press any key to continue...";
cin.sync();
_getch();

return 0;
}

最佳答案

这是一个问题:

Seconds::Seconds(int totalSeconds)
{
totalSeconds = totalSeconds;
}

函数参数totalSeconds隐藏了类成员,所以这段代码就像做x = x;,它对this->totalSeconds<没有影响.

要解决这个问题,要么使用不同的变量名,要么最好使用构造函数初始化语法:

Seconds::Seconds(long totalSeconds)
: totalSeconds(totalSeconds)
{
}

在这个版本中,由于构造函数初始化列表是智能的,因此不会发生阴影。

关于c++ - 函数未接收到值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22902450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com