错误: expected constructor, destructor, or type conversion beforce '*' token

Andyi 2009-02-11 11:15:45
以下代码编译时出现错误,请问该怎么解决呢?
list/list.h:377: 错误: expected constructor, destructor, or type conversion beforce '*' token
list/list.h:377: 错误: expected constructor, destructor, or type conversion beforce '*' token

template <class TYPE, class ARG_TYPE>
CList <TYPE, ARG_TYPE>::CNode*
CList <TYPE, ARG_TYPE>::NewNode(CList::CNode* pPrev, CList::CNode* pNext)
{
if (m_pNodeFree == 0)
{
// add another block
CPlex* pNewBlock = CPlex::Create(m_pBlocks, m_nBlockSize,
sizeof(CNode));

// chain them into free list
CNode* pNode = (CNode*) pNewBlock->data();
// free in reverse order to make it easier to debug
pNode += m_nBlockSize - 1;
for (int i = m_nBlockSize-1; i >= 0; i--, pNode--)
{
pNode->pNext = m_pNodeFree;
m_pNodeFree = pNode;
}
}
assert(m_pNodeFree != 0); // we must have something

CList::CNode* pNode = m_pNodeFree;
m_pNodeFree = m_pNodeFree->pNext;
pNode->pPrev = pPrev;
pNode->pNext = pNext;
m_nCount++;
assert(m_nCount > 0); // make sure we don't overflow

pNode->data = 0;

return pNode;
}
...全文
665 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dreampark 2010-07-22
  • 打赏
  • 举报
回复
遇到相同问题,最后把newNode直接放到函数定义里解决的。
protected:
CNode* m_pNodeHead;
CNode* m_pNodeTail;
int m_nCount;
CNode* m_pNodeFree;
struct CPlex* m_pBlocks;
int m_nBlockSize;

CNode* NewNode(CNode* pPrev, CNode* pNext)
{
if (m_pNodeFree == 0)
{
// add another block
CPlex* pNewBlock = CPlex::Create(m_pBlocks, m_nBlockSize,
sizeof(CNode));

// chain them into free list
CNode* pNode = (CNode*) pNewBlock->data();
// free in reverse order to make it easier to debug
pNode += m_nBlockSize - 1;
for (int i = m_nBlockSize-1; i >= 0; i--, pNode--)
{
pNode->pNext = m_pNodeFree;
m_pNodeFree = pNode;
}
}
assert(m_pNodeFree != 0); // we must have something

CNode* pNode = m_pNodeFree;
m_pNodeFree = m_pNodeFree->pNext;
pNode->pPrev = pPrev;
pNode->pNext = pNext;
m_nCount++;
assert(m_nCount > 0); // make sure we don't overflow

pNode->data = 0;

return pNode;
};
void FreeNode(CNode*);
};
Andyi 2009-02-12
  • 打赏
  • 举报
回复
哈哈,谢谢荣哥,问题解决了.
arong1234 2009-02-11
  • 打赏
  • 举报
回复
不怕不知道答案,就怕不知道怎么根据信息找答案
错误号是非常重要的信息哦
arong1234 2009-02-11
  • 打赏
  • 举报
回复
把你的错误代码C4346在MSDN里一查,就知道原因了。对于类型CList<TYPE,ARG_TYPE>::CNode(依赖于其他信息的不完整类型?),需要typename修饰,因此把CList<TYPE,ARG_TYPE>::CNode都需要换成typename CList<TYPE,ARG_TYPE>::CNode
baihacker 2009-02-11
  • 打赏
  • 举报
回复
typename CList<TYPE, ARG_TYPE>::CNode
Andyi 2009-02-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 baihacker 的回复:]
嘿嘿...上更多代码吧.
[/Quote]
代码放进空间了,请帮忙研究一下,谢谢大家!
http://blog.csdn.net/Andyi/archive/2009/02/11/3879284.aspx
baihacker 2009-02-11
  • 打赏
  • 举报
回复
嘿嘿...上更多代码吧.
Andyi 2009-02-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 arong1234 的回复:]
CList::CNode都要换成CList <TYPE, ARG_TYPE>::CNode
[/Quote]

谢谢回答,是改成这样吗? 编译时也是出现同样错误呢.

template <class TYPE, class ARG_TYPE>
CList <TYPE, ARG_TYPE>::CNode*
CList <TYPE, ARG_TYPE>::NewNode(CList <TYPE, ARG_TYPE>::CNode* pPrev, CList <TYPE, ARG_TYPE>::CNode* pNext)

waizqfor 2009-02-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 arong1234 的回复:]
CList::CNode都要换成CList <TYPE, ARG_TYPE>::CNode
[/Quote]
UP 就是这个错误
arong1234 2009-02-11
  • 打赏
  • 举报
回复
CList::CNode都要换成CList<TYPE, ARG_TYPE>::CNode
Andyi 2009-02-11
  • 打赏
  • 举报
回复
CList <TYPE, ARG_TYPE>::CNode* 这行就是377行

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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