У меня есть 3 класса - GLWidget, Window и правила. Окно создает объект GLWidget с именем «m_glWidget», который я пытаюсь получить из правил класса. Я пробовал использовать «extern» и меняю вещи, но ничто, кажется, не заставляет его работать. Самое близкое, что у меня есть, - это одна ошибка, которая говорит «класс хранения, указанный для« m_glWidget », но я не уверен, что это значит. Это мой код:Объявление моего объекта как «extern» дает «класс хранения указан» ошибка
window.h
#include "glwidget.h"
#include "rules.h"
class GLWidget; class rules;
class Window : public QDialog, public Ui::frmMain
{
Q_OBJECT;
public:
Window(QWidget *parent = 0);
rules *gameRules;
GLWidget *m_glWidget;
window.cpp
#include "rules.h"
#include "glwidget.h"
class rules; class GLWidget;
using namespace std;
Window::Window(QWidget *parent):QDialog(parent)
{
m_glWidget = new GLWidget;
gameRules = new rules;
rules.h
#include "windows.h"
#include "glwidget.h"
class rules{
public:
rules();
extern GLWidget *m_glWidget;
rules.cpp
#include "window.h"
#include "glwidget.h"
using namespace std;
rules::rules(){
}
void rules:: print(){
cout << m_glWidget->x << endl;
}
'extern' не может быть применен к классу. –
Хорошо спасибо. Любые предложения по другому пути доступа к переменной в GLWidget из правил? – hunterge
Как обычно, добавьте ссылку на экземпляр окна в правилах. – user3159253