"A uses B, which is being defined"是什么意思?
what does "A uses B, which is being defined" mean?
现在我按照规则要求做了,首先看看这个问题是否已经得到了回答,虽然我确实找到了一个帖子,但它没有解决我的具体问题,所以我自己问了。
对于一个简短的上下文,这个错误是在我正在创建的双链表类的节点类中,因此显然节点必须对其前进和先前的邻居有某种了解
以下代码。。。
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:
};
第十二行不会停止给我以下错误
Error C2460
'dslListNode<T>::m_prev': uses 'dslListNode<T>', which is being defined
所以你。。。
老实说,我不知道现在发生了什么,我在c++方面的技能还没有达到我理解为什么会发生这样的事情的水平,互联网到目前为止在这方面没有帮助,所以我请求帮助。
为什么会发生这种情况,我能做些什么来解决它?
很抱歉我的语法和拼写btw=D
感谢高级=)
行:
dslListNode<T>* m_next, m_prev;
相当于:
dslListNode<T>* m_next; // A pointer
dslListNode<T> m_prev; // An object.
在类的定义中有一个指向dslListNode<T>
的指针是可以的。该语言允许指向不完整类型的指针。
但是,在定义类本身时,不能有dslListNode<T>
类型的成员变量。类似于:
struct A
{
A a;
};
这是行不通的,因为A
的定义需要A
的定义。这导致了无限的下降。
你需要
dslListNode<T>* m_next; // A pointer
dslListNode<T>* m_prev; // Another pointer.
你可以使用一句话:
dslListNode<T>* m_next, *m_prev;
然而,两行版本的可读性更强。我强烈建议使用它。
在这种情况下,这意味着您在m_prev
的声明中省略了*
。该成员将是dslListNode
的实例,而不是指向某个实例的指针。
dslListNode<T>* m_next, *m_prev;
在定义类时不能创建同一类的成员变量,但可以创建指向同一个类的指针。正如你的代码中所说,
dslListNode<T>* m_next, m_prev;
这意味着m_next是dslListNode的指针变量,m_prev是唯一的变量。如果您喜欢将m_prev声明为指针变量,则必须适当地使用指针语法,如下所示:
dslListNode<T>* m_next, *m_prev;
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- C++避免重复声明的语法是什么
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- C++从另一个类访问公共静态向量的正确方法是什么
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- C++中名称篡改的目的是什么
- 在 c++ 中拥有一组结构的正确方法是什么?
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 是什么阻止DOMTimerCoordinator::NextID进入无休止的循环
- 派生类销毁的最佳实践是什么
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 通过JNI传递数据数组的最快方法是什么
- "using namespace std;"在C++的作用是什么?
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 是什么导致了代码中出现"error LNK2005: already defined in .obj"错误?
- "inline function need to be DEFINED in all tranlation units"背后的理由是什么?
- 最新草案§8.5.3/5第(5.2.3/5)段(5.2.2.1)中的"user-defined conversions are not considered"是什么意思?
- "A uses B, which is being defined"是什么意思?
- "member function already defined or declared" - 这是什么意思?