Как я могу инициализировать статический указатель в C ++?

У меня есть следующий фрагмент кода. Я хочу получить доступ к своему стеку из другого класса. (Этот стек заполнен QWidgets, которые мне нужны в некоторых других классах). Но я даже не дошел до инициализации моей статической переменной в конструкторе главного окна. Сообщение об ошибке: «уточненный идентификатор в объявлении перед ‘=’ токеном»

/*mainwindow.h*/
class MainWindow : public QMainWindow
{
Q_OBJECT

public:
explicit MainWindow(QWidget *parent = 0); //Konstruktor
~MainWindow(); //Destruktor

//static QStack<QWidget*> *widgetStack;
//static QStack<QWidget*> getWidgetStack();
static QStack<QWidget*> *widgetStack;private:
Ui::MainWindow *ui;

/*mainwindow.cpp*/
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent), ui(new Ui::MainWindow)
{
/*ui->setupUi(this);
QStack<QWidget*> *MainWindow::widgetStack = new QStack<QWidget*>();

}

/*A method in another class*/
void Support::on_Taster_Power_clicked()
{
MainWindow.widgetStack->pop();
}

Я очень старался, но у меня ничего не получалось. пожалуйста помоги. заранее спасибо

1

Решение

/*mainwindow.cpp*/

QStack<QWidget*> *MainWindow::widgetStack = new QStack<QWidget*>();

MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent), ui(new Ui::MainWindow)
{
/*ui->setupUi(this); */
}
1

Другие решения

Порядок инициализации нелокальных статических объектов
определено в разных единицах перевода не указано стандартом.
Это подвержено ошибкам …

Статические объекты внутри функций известны как локальные статические объекты.
(потому что они локальны для функции), и другие виды статических
объекты известны как нелокальные статические объекты.

Я настоятельно рекомендую вам использовать этот способ:

static const QStack<QWidget*>& getWidgetStack() {
static QStack<QWidget*> widgetStack = QStack<QWidget*>();
return widgetStack;
}

static QStack<QWidget*>* getMutableWidgetStack() {
const_cast<QStack<QWidget*>*>(&getWidgetStack());
}
0

По вопросам рекламы [email protected]