【发布时间】:2011-08-12 05:28:29
【问题描述】:
这是我的标题代码:
#ifndef CLANDTYPES_H
#define CLANDTYPES_H
class CLandTypes
{
public:
CLandTypes();
~CLandTypes();
private:
class Pimple;
static Pimple * d;
};
#endif // CLANDTYPES_H
因为它应该是我尝试在我的 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;
}
}
我的两个错误是:
不完整类型“struct CLandTypes::Pimple”的使用无效
'struct CLandTypes::Pimple' 的前向声明
【问题讨论】:
-
你收到什么信息?
-
那会是什么?您收到什么错误消息?
-
您是否在某处定义了 Pimple 类?执行
new时是否可见? -
这样使用 CLandTypes::Pimple * d = new CLandTypes::Pimple();
-
我添加了更多代码和两个错误。
标签: c++ initialization static-class