gpt4 book ai didi

c++ - 如何在已执行的方法中传递字段的值?

转载 作者:行者123 更新时间:2023-11-28 01:34:07 24 4
gpt4 key购买 nike

我意识到我的 Stop() 方法永远不会启动,因为 Start() 方法永远不会停止。同义反复,但这就是为什么这不起作用的答案。那么,如何停止我的 Start() 方法?


我需要在执行 Start()/Stop() 方法时将 isTurnedOn 值更改为 true/false。但是当我以下列方式执行这些方法时: void main(){sw.Start(); sw.Watch(); sw.Stop();} - 时钟永不停止;我应该怎么做才能修复它?

class Stopwatch {
bool isTurnedOn;
}sw;
void Stopwatch::Start() {
isTurnedOn = true;
}
void Stopwatch::Stop() {
isTurnedOn = false;
}
void Stopwatch::Watch() {
while(isTurnedOn)
{
h = hours < 10 ? "0" : "";
s = seconds < 10 ? "0" : "";
m = minutes < 10 ? "0" : "";
cout << h << hours << " : " << m << minutes << " : " << s << seconds;
Sleep(1000);
system("cls");
seconds++;
if (seconds == 60) {
minutes++;
seconds = 0;
if (minutes == 60) {
hours++;
seconds = 0;
minutes = 0;
}
}
}

最佳答案

据我所知,您正在尝试实现 Stopwatch 类,它可以让您测量从某个时刻起经过了多少时间。

请看Stopwatch class from C# ,尤其是在示例中。这是一种可能的方法,而且还不错。这应该暗示您可以如何设计您的类(class)。

最小的界面可以是这样的:

class Stopwatch
{
public:
// initialises internal state to the current time
Stopwatch();

// returns how many milliseconds elapsed since creation of this instance
uint64_t elapsed_ms();
}

使用 std::chrono 实现它图书馆。

使用示例:

void heavy_func();

int main()
{
Stopwatch sw;
heavy_func();
auto elapsed_ms = sw.elapsed_ms();
std::cout << "heavy_func() took " << elapsed_ms << " ms\n";
}

您需要根据自己的需要对其进行调整。尽量保持简单,不要陷入“瑞士军刀”的陷阱。

关于c++ - 如何在已执行的方法中传递字段的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50107481/

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