std::list的问题

djhdu 2004-03-29 11:28:32
#include <list>
using namespace std;
class CTestList
{
public:
CTestList();
virtual ~CTestList();
protected:
std::list<CTestList> m_ObjectList; //错误行
};
总是提示我“rror C2079: '_Value' uses undefined class 'CTestList'see reference to class template instantiation 'std::list<class CTestList,class std::allocator<class CTestList> >' being compiled

这个如何解决啊?
...全文
967 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cgsw12345 2004-03-29
  • 打赏
  • 举报
回复
gddsky(gddsky) 说的对
一个类的定义是直到它的分号结束
要能使用这个类一定要提供完整的定义!
为什么指向类的指针可以呢,因为指针不
需要知道类的完整定义!
sharkhuang(爱情和程序都读不懂)
兄弟可没看清楼主的意思!在这种情况下加一
个前向声明还是没有用的。

关于这个问题的说明在一本书上可以找到:
《inside C++ object model》
有时间可以看看,这是本好书!
gddsky 2004-03-29
  • 打赏
  • 举报
回复
class CTestList 声明
只用用做 std::list<CTestList*>
而不能用做 std::list<CTestList>
sharkhuang 2004-03-29
  • 打赏
  • 举报
回复
前面加一句class CTestList;声明!就可以了.
gddsky 2004-03-29
  • 打赏
  • 举报
回复
std::list<CTestList>
这样子定义, list不知道CTestList里面倒底有什么东西.
class CTestList
还没有定义完.
djhdu 2004-03-29
  • 打赏
  • 举报
回复
谢谢,测试通过,这是什么原因造成的呢?
kenryHuang 2004-03-29
  • 打赏
  • 举报
回复
std::list<CTestList> m_ObjectList; //错误行
我想是用CTestList做模版参数的时候应该看到CTestList的完整定义。。你用
std::list<CTestList*> m_ObjectList; 试试
shallchen 2004-03-29
  • 打赏
  • 举报
回复
在类里定义一个拷贝构造函数
yjh1982 2004-03-29
  • 打赏
  • 举报
回复
#include <list>
using namespace std;
class CTestEntry
{
public:
CTestEntry();
virtual ~CTestEntry();
};
class CTestList
{
public:
std::list<CTestEntry> m_ObjectList;
};

list模版要用到对象来定义.要知道该对象的大小
lonenomad 2004-03-29
  • 打赏
  • 举报
回复
c++不充许在类的定义中,定义自身的对象.这是不和逻辑的,因为它会递归调用自身的构造函数.但可以有自身的指针对象,因为不会创建对象.指针只是一个32位的地址.

24,860

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧