у меня есть MainWindow
учебный класс
class MainWindow : public QMainWindow
{
customClass * obj;
public:
void foo(bool);
}
Вот мой customClass:
class customClass
{
void foo1(bool);
}
Теперь я хочу позвонить foo()
метод в foo1()
,
Как это сделать?
Вы можете сделать конструктор вашего customClass
взять указатель на MainWindow
который он хранит в переменной-члене для последующего использования.
class customClass
{
public:
customClass(MainWindow* mainWindow)
: mainWindow_(mainWindow)
{
}
void foo1(bool b) {
mainWindow_->foo(b);
}
private:
MainWindow* mainWindow_;
}
Один из способов — использование шаблона внедрения зависимостей: ссылка на сайт
struct A;
struct B
{
B( A& a );
void foo1()
{
m_a.foo();
}
private:
A& m_a;
}
struct A
{
void foo(){}
B m_b;
}
Вы можете заставить свой MainWindow реализовывать одноэлементный шаблон (если он применим к вашему дизайну), тогда вы можете напрямую получить экземпляр из любого места, которое вам нравится.