這裏是我的頭代碼:如何初始化靜態類的疙瘩成語的d(指針)?
#ifndef CLANDTYPES_H
#define CLANDTYPES_H
class CLandTypes
{
public:
CLandTypes();
~CLandTypes();
private:
class Pimple;
static Pimple * d;
};
#endif // CLANDTYPES_H
,因爲它應該是一個靜態類,我tryed代碼在我的cpp文件:
#include "clandtypes.h"
CLandTypes::Pimple * CLandTypes::d = new CLandTypes::Pimple();
...
但什麼是錯的!
---------- ----------編輯
這裏是我的擴展C++代碼:
#include "clandtypes.h"
#include "qvector.h"
#include "qpair.h"
CLandTypes::Pimple * CLandTypes::d = new CLandTypes::Pimple();
class CLandTypes::Pimple
{
public:
Pimple();
~Pimple();
QVector > LandTypes;
};
CLandTypes::Pimple::Pimple()
: LandTypes(NULL)
{
LandTypes.push_back(qMakePair((unsigned int) 0, (QString)"undefined"));
LandTypes.push_back(qMakePair((unsigned int) 1, (QString)"rocky"));
}
CLandTypes::Pimple::~Pimple(){}
CLandTypes::CLandTypes()
{
if (!d)
{
d = new Pimple();
if (!d)
{
throw std::bad_alloc();
}
}
}
CLandTypes::~CLandTypes()
{
if(d)
{
delete d;
d = NULL;
}
}
我的兩個錯誤是:
無效使用不完全類型的「結構CLandTypes ::疙瘩」
的「結構CLandTypes ::疙瘩」
你會得到什麼信息? – 2011-04-25 09:26:19
那會是什麼?你收到什麼錯誤信息? – 2011-04-25 09:26:24
您是否在某處定義了Pimple類?當你做'新'時可見嗎? – 2011-04-25 09:29:55