说我有在头文件中定义就像一个静态成员:我们可以在构造函数中定义静态类成员吗?
static QHash<QString,int> flagColorsMap;
我如何可以定义为cpp文件构造函数中的HashMap中。如果我做到以下几点:
Classname::flagColorsMap.insert("xyz",22);
它给编译错误 ::未定义的引用类名:: flagColorMap。
说我有在头文件中定义就像一个静态成员:我们可以在构造函数中定义静态类成员吗?
static QHash<QString,int> flagColorsMap;
我如何可以定义为cpp文件构造函数中的HashMap中。如果我做到以下几点:
Classname::flagColorsMap.insert("xyz",22);
它给编译错误 ::未定义的引用类名:: flagColorMap。
在.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;
}
它还没有窝RK?
我想你有这个编译错误,因为你只是“delcare”flagColorsMap而不是“定义”它。 因此,在.cpp文件中定义flagColorsMap可能会导致此错误消失。
你初始化了'flagColorsMap'吗? – pSoLT
这是一个链接器错误。尝试添加'QHash Classname :: flagColorsMap'来定义静态成员,在一个且只有一个源文件中具有可见性(例如,包括)类定义。 –
Peter
你为什么使用班级资格证书? – Rama