В .cpp файле добавьте эту строку:
QHash<QString,int> Classname::flagColorsMap;
Отредактировано: Пожалуйста, проверьте это действительно простой пример статической инициализации члена QHash: создать новый Qt Quick проект и редактировать MainWindow класс:
// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
static QHash<QString,int> flagColorsMap;
};
#endif // MAINWINDOW_H
И исходный файл:
// mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
QHash<QString,int> MainWindow::flagColorsMap;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
MainWindow::flagColorsMap.insert("xyz",22);
}
MainWindow::~MainWindow()
{
qDebug() << "Value=" << flagColorsMap.value("xyz");
delete ui;
}
Является ли он по-прежнему не wo гк?
Вы инициализировали 'flagColorsMap'? – pSoLT
Это ошибка компоновщика. Попробуйте добавить 'QHash Classname :: flagColorsMap', чтобы определить статический член в одном и только одном исходном файле, который имеет видимость (например, включает) определение класса. –
Peter
Почему вы используете классный аттестат? – Rama