C++ / Qt QTime - 如何使用对象

C++ / Qt QTime - How to use the object

本文关键字:何使用 对象 QTime Qt C++      更新时间:2023-10-16

这更像是一个初学者C++ 问题:

我有2节课:

  • A类,包括"ReadData"方法,一旦TCP套接字收到新数据,就会调用
  • 该方法
  • B类,包括通过TCP发送大量数据的方法"开始"。

由于体系结构的原因,不可能在一个类中同时使用这两种方法。

我想做什么:

  1. 一旦调用了 B 类中的"开始",就启动计时器。
  2. 一旦
  3. 调用了类 A 中的"读取数据",就停止计时器。
  4. 然后我会计算差异,看看花了多长时间......

我的问题:

  • 在哪里创建对象:

    QTimer transferTimer;
    
  • 如何将对象传递给我的两个类?

C++如何处理这个问题的正确方法是什么?

谢谢。

这是可能的解决方案之一。它被简化以演示这个想法:

class C
{
public:
void start()
{
m_startTime = QTime::currentTime();
}
void stop()
{
m_endTime = QTime::currentTime();
}
int difference() const
{
return m_startTime.secsTo(m_endTime);
}
private:
QTime m_startTime;
QTime m_endTime;
};
class A
{
public:
A(std::shared_ptr<C> c) : m_c(c)
{}
void ReadData()
{
// ...
m_c->stop();
int transferTime = m_c->difference(); // seconds
}
private:
std::shared_ptr<C> m_c;
};
class B
{
public:
B(std::shared_ptr<C> c) : m_c(c)
{}
void start()
{
// ...
m_c->start();
}
private:
std::shared_ptr<C> m_c;
};
int main(int argc, char ** argv)
{
auto c = std::make_shared<C>();
// a and b keep reference to instance of class C
A a(c);
B b(c);
[..]
return 0;
}