提示:這個辦法可以用在QtC++程式和QtQML的資料交換
首次初始化:DDocumentSets::getInstance()->setModel(oa_model);
以後任何class中都可以獲得這個執行個體:DDocumentSet*oa_model=DDocumentSets::getInstance()->getModel();
並調用其方法: oa_model->xxxx();
header檔案:
#ifndefDDOCUMENTSETS_H_#defineDDOCUMENTSETS_H_#include"DDocumentSet.hpp"classDDocumentSets{private:staticDDocumentSets*_instance;DDocumentSets();DDocumentSet*model;public:staticDDocumentSets*getInstance();voidsetModel(DDocumentSet*oa_model);DDocumentSet*getModel();virtual~DDocumentSets();};#endif/*DDOCUMENTSETS_H_*/
cpp檔案:
#include"DDocumentSets.h"DDocumentSets*DDocumentSets::_instance;//JiangDDocumentSets*DDocumentSets::getInstance(){if(_instance==0){_instance=newDDocumentSets();}return_instance;}voidDDocumentSets::setModel(DDocumentSet*model){this->model=model;}DDocumentSet*DDocumentSets::getModel(){returnmodel;}DDocumentSets::DDocumentSets(){}DDocumentSets::~DDocumentSets(){}
參考:
http://stackoverflow.com/questions/8612206/linker-error-when-using-static-members
在C++程式中,needto define thestaticvariableincppfileandnotinheaderfile.
在Qt程式中,需要在cpp和header檔案中都定義相同名字的static變數。否則編譯出錯:
undefinedreferencetoxxxx(static變數)