类的公共数据有几种存储方式,其中一种为把数据作为一个类的静态变量,这样类的所有对象都可以访问该数据,并且这个共享的数据只占有在类的公共空间,不会因为对象的多少而增加存储空间。
例如:
sutudent.h
class Student { public: static Qstring classStr; Studen(); ... }sutudent.cpp
QString Student::classStr = "三年一班"; ...
这样就定义好了,之后就可以用Student::classStr来访问该字符串。
那么如果是个容器QMap该如何定义呢?
静态变量只能用静态函数去赋值,请看下例:
PItemInfo.h
class PItemInfo { public: static QMap<QString,QColor> colorMap; static QMap<QString,QColor> initColorMap(); PItemInfo(); }PItemInfo.cpp
#include "PItemInfo.h" QMap<QString,QColor> PItemInfo::colorMap = PItemInfo::initColorMap(); QMap<QString, QColor> PItemInfo::initColorMap() { QMap<QString, QColor> map; map.insert("黑",QColor(Qt::black)); map.insert("灰",QColor(Qt::gray)); map.insert("深灰",QColor(Qt::darkGray)); map.insert("浅灰",QColor(Qt::lightGray)); map.insert("红",QColor(Qt::red)); map.insert("黄",QColor(Qt::yellow)); map.insert("蓝",QColor(Qt::blue)); map.insert("绿",QColor(Qt::green)); map.insert("透明",QColor(Qt::transparent)); return map; } PItemInfo::PItemInfo() { ... }