@MrDlop
I love C++

Как исправить ошибку при инициализации статического указателя на класс?

Мне нужно сделать двусторонний канал связи между двумя классами. Я решил реализовать это с помощью static указателей. Один класс наследник QMainWindow, другой QTcpServer.
В файл mainwindow.h объявил переменную static MainWindow* pMainWindow;. Далее пытался определить её двумя способами:
1) в main.cpp определил как MainWindow::pMainWindow = new MainWindow();
2) В конструкторе присвоил pMainWindow this
В обоих случаях возникает ошибка undefined reference to `MainWindow::pMainWindow'.
Я думал ошибка в том что я изначально не определил указатель в mainwindow.cpp, но при задании там nullptr выдавалась ошибка C++ requires a type specifier for all declarations.
Ошибка возникает и в другом классе.
Что я сделал не правильно?
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
@dima20155
you don't choose c++. It chooses you
В Qt есть специальный механизм для передачи данных между классами - сигналы и слоты.
Без конкретного кусочка кода не очень понятно в чем ошибка. Возможно, вы не объявили переменную
static MainWindow* pMainWindow;
внутри тела класса
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы