У меня есть два разных класса в двух файлах:как подключить функцию между двумя классами
class Game: public QGraphicsView()
class Window: public QMainWindow()
{
public: Window();
Game *game;
public slots: void test() {game = new Game();};
}
в Window.cpp
я начинаю новую игру, используя тест функции():
Window::Window() {test();}
теперь в Game.cpp
I создать QMessageBox
с двумя QPushButton
QMessageBox *box= new QMessageBox();
QPushButton *btYES = box->addButton(tr("YES"),QMessageBox::ActionRole);
QPushButton *btNO = box->addButton(tr("NO"),QMessageBox::ActionRole);
box->exec();
if (box->clickedButton() == btYES) {Window::test();}
if (box->clickedButton() == btNO) {close();}
Как вы можете видеть, я хочу подключить функцию test()
к btYES
внутри Game.cpp
, но эта функция находится внутри Window.cpp
, и ее функция - начать новую игру.
Это можно сделать?
Похоже, вы хотите создать 'static' функцию. Если да, то это решение: 'static void test() {/*...*/}' – PcAF
'Window :: Window() {Game * game = new Game();}' <= Вы создаете новая локальная переменная называется 'game'. 'void test() {game = new Game();};' <= Вы инициализируете переменную-член, называемую 'game'. Выглядит потенциально опасно, это специально? – thuga
Хорошо, извините, я совершил ошибку. Я объявил {Game * game} в классе Window.h публично: –