это более общий для начинающих C ++ Вопрос:
У меня есть 2 класса:
Из-за архитектуры невозможно использовать оба метода в одном классе.
Что я хочу сделать:
Мой вопрос:
Где я могу создать объект:
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;
}
Других решений пока нет …