Tir*_*ous -1 c++ visual-studio visual-c++ visual-studio-2015
现在我按照规则要求做了,并且首先看看是否已经回答了这个问题,虽然我确实找到了一个帖子,但它未能解决我的具体问题,因此我自己问.
对于一个简短的上下文,这个错误在我正在制作的双链表列表的节点类中,因此很明显节点必须对其进程和前面的邻居有一些了解
以下代码......
template<class T> class dslListNode
{
public:
dslListNode(T data, dslListNode<T>* next, dslListNode<T>* prev)
: m_data(data)
{
this->m_next = next;
this->m_prev = prev;
}
T m_data;
dslListNode<T>* m_next, m_prev; //<-- line twelve
void purge()
{
if (this->m_next != NULL)
{
this->m_next->purge();
delete this->m_next;
}
}
private:
};
Run Code Online (Sandbox Code Playgroud)
...在第十二行不会停止给我以下错误
Error C2460
'dslListNode<T>::m_prev': uses 'dslListNode<T>', which is being defined
Run Code Online (Sandbox Code Playgroud)
所以你...
我老实说不知道现在发生了什么,我在c ++的技能还没达到我理解为什么会发生这种事情的程度,到目前为止互联网没有帮助这方面,因此我请求帮忙.
为什么会发生这种情况,我该怎么做才能解决它?
为我的语法和拼写道歉btw = D.
谢谢先进=)
这条线:
dslListNode<T>* m_next, m_prev;
Run Code Online (Sandbox Code Playgroud)
相当于:
dslListNode<T>* m_next; // A pointer
dslListNode<T> m_prev; // An object.
Run Code Online (Sandbox Code Playgroud)
dslListNode<T>在类的定义中有一个指针是可以的.语言允许指向不完整类型的指针.
但是,dslListNode<T>在定义类本身时,不能有类型的成员变量.它类似于:
struct A
{
A a;
};
Run Code Online (Sandbox Code Playgroud)
它不会起作用,因为定义A需要定义A.这导致无限下降.
你需要
dslListNode<T>* m_next; // A pointer
dslListNode<T>* m_prev; // Another pointer.
Run Code Online (Sandbox Code Playgroud)
你可以使用一个班轮来获得它:
dslListNode<T>* m_next, *m_prev;
Run Code Online (Sandbox Code Playgroud)
但是,两行版本更具可读性.我强烈建议使用它.
| 归档时间: |
|
| 查看次数: |
755 次 |
| 最近记录: |