Здравствуйте!
Есть класс MainWindow. В нем - публичная переменная int N.
Дальше я хочу к ней обратиться из другого класса:
А компилятор пишет,
expected primary-expression before '.' token
int K = MainWindow.N;
^
Что я делаю не так?
Есть класс MainWindow. В нем - публичная переменная int N.
Дальше я хочу к ней обратиться из другого класса:
А компилятор пишет,
expected primary-expression before '.' token
int K = MainWindow.N;
^
Что я делаю не так?
-
-
01.06.2014 в 20:30А в чём вообще был изначальный смысл этой строчки?
Если что: в этой строчке вы пытаетесь объявнить переменную K, являющуюся членом класса, и проинициализировать её чем-то странным. Проблемы две:
1. Такая форма инициализации поддерживается только в C++11
2. Такой способ обращения к переменным другого класса в C++ в принципе запрещён. Должно быть как минимум MainWindow::N, и то, для этого N должна быть публичной статической переменной класса MainWindow.
-
-
01.06.2014 в 20:36Должно быть как минимум MainWindow::N
Так я изначально и написала. На это компилятор ругался:
invalid use of non-static data member 'MainWindow::N'
int M, N;
^
Ну, в общем, она не static. А как к не статической переменной обратиться?
Я их (эти классы) и френдить пыталась, но одного упоминания дружественного класса, как в большинстве нагугленных примеров, недостаточно.
-
-
01.06.2014 в 21:01для обращения к нестатической переменной нужен либо экземпляр класса, либо указатель на него. Через них и обращаться
-
-
01.06.2014 в 21:13А как это (с указателем) будет выглядеть?
-
-
01.06.2014 в 21:15Это как? Указатель может быть только на экземпляр. Так что, либо делаете это поле статическим, либо откуда-то откапываете указатель на экземпляр класса MainWindow.
-
-
01.06.2014 в 21:24С другой стороны,
чем черт не шутит,я сделала "static int N". В результате при каждом обращении к переменной N в программе выдается ошибка "undefined reference to `MainWindow::N'".-
-
01.06.2014 в 21:33Но,
я лакимэн,пример отсюда не сработал у меня.ошибка: incomplete type 'QApplication' used in nested name specifier
MainWindow *nw = qobject_cast( QApplication::topLevelWidgets()[ 0 ] );
^
-
-
01.06.2014 в 21:40MainWindow *nw = qobject_cast( QApplication::topLevelWidgets()[ 0 ] );
Если этот код находится в реализации метода MainWindow, то можно смело заменить его на this.
-
-
01.06.2014 в 21:54Вообще, кусок кода в mainwindow.h выглядит так:
-
-
02.06.2014 в 04:11-
-
02.06.2014 в 11:33