C++ 如何在c++;?

C++ 如何在c++;?,c++,data-structures,fibonacci-heap,C++,Data Structures,Fibonacci Heap,您好,这是代码: template <class T> class FibonacciHeap{ public: class Entry{ public: // Returns the element represented by this heap entry. T getValue(){ return mElem; } // S

您好,这是代码:

template <class T> class FibonacciHeap{
public:
    class Entry{
        public:
            // Returns the element represented by this heap entry.
            T getValue(){
                return mElem;
            }

            // Sets the element associated with this heap entry.
            void setValue(T value){
                    mElem = value;
            }

            // Returns the priority of this element.
            double getPriority(){
                return mPriority;
            }

        private:
            int mDegree = 0;                // Number of children
            bool mIsMarked = false;         // Whether the node is marked

            Entry mNext;                    // Next element in the list
            Entry mPrev;                    // Previous element in the list

            Entry mChild;                   // Child node, if any
            Entry mParent;                  // Parent node, if any
            T mElem;                        // Element being stored here
            double mPriority;               // Its priority

            //Constructs a new Entry that holds the given element with the indicated priority.
            Entry(T elem, double priority){
                mNext = mPrev = this;
                mElem = elem;
                mPriority = priority;
            }
    };
    ...
我知道这是用java做的,但是当我在C++中编译时,我得到:

    error: 'FibonacciHeap<T>::Entry::mNext' has incomplete type
错误:“FibonacciHeap::Entry::mNext”的类型不完整

有人知道如何解决这个问题吗?< /P> < P>基于变量名和初始化器,我假设你将我的思想变成C++。如果是这样,祝你好运

在爪哇中,如果你有一个变量<代码>词条,它的作用就像C++的变量,类型<代码>词条*/CUT>,因为它是指向另一个<代码>条目对象的指针,而不是一个诚实到善良的代码>条目对象。因此,在

条目
类的定义中,您应该调整字段,使其为
条目*
类型,而不是
条目
。类似地,您不需要使用
操作符来选择字段,而需要使用
->
操作符。所以

First_entry.mPrev.mNext
将被改写为

First_entry->mPrev->mNext

不要忘记显式初始化
条目
指向
nullptr的指针
——Java会自动执行此操作,这就是Java版本中没有初始化器的原因。但是,C++给出了未初始化指针的垃圾值,所以一定要给出<代码> MCHAVE/C++ >和MBON/CODE> >显式<代码> NulLPTR< /Calp>Value.< /P> < P>基于变量名和初始化器,假设您将我的代码转换成C++。如果是这样,祝你好运

在爪哇中,如果你有一个变量<代码>词条,它的作用就像C++的变量,类型<代码>词条*/CUT>,因为它是指向另一个<代码>条目对象的指针,而不是一个诚实到善良的代码>条目对象。因此,在

条目
类的定义中,您应该调整字段,使其为
条目*
类型,而不是
条目
。类似地,您不需要使用
操作符来选择字段,而需要使用
->
操作符。所以

First_entry.mPrev.mNext
将被改写为

First_entry->mPrev->mNext

不要忘记显式初始化
条目
指向
nullptr的指针
——Java会自动执行此操作,这就是Java版本中没有初始化器的原因。然而,C++给出了未初始化指针的垃圾值,因此请确保给出<代码> MCHOL< <代码> > <代码> MBON/CODE> >显式<代码> NulLPTR< /Calp>Value.< /P>:注意:这不是递归。<代码>条目MNEXT;<代码>,
输入mPrev,等等,你在这里遗漏了一些东西。在C++中,大多数列表使用指向节点的指针或<代码>条目< /代码>。Java没有指针。@m0skit0它叫什么?相关的(可能是重复的):请注意:这不是递归。
Entry mNext
输入mPrev,等等,你在这里遗漏了一些东西。在C++中,大多数列表使用指向节点的指针或<代码>条目< /代码>。java没有指针。@ M0SKIT0它叫什么?相关(可能是重复的):嗯,是的,我正在尝试将它改编成C++。谢谢你的帮助!嗯,是的,我正在尝试把它改编成C++。谢谢你的帮助!