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

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

这是一个比较一般的C++初学者问题:

我有 2 个 classes:

由于架构原因,不可能将两种方法合二为一class。

我想做的事情:

  1. 一旦 Class B 中的 'Start' 被调用,就启动一个计时器。
  2. 一旦 'ReadData'in Class A 被调用,立即停止计时器。
  3. 那我算一下差额,看看用了多长时间...

我的问题:

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;
}