我正在从事有关数据结构的项目。
首先,我主要写了所有内容,但听起来像C。但是据我所知,我试图思考OOP,并在main()方法中尽可能少地做。

我已经在类中实现了add,delet,find之类的操作。实现它非常容易。

class ARB
{
        private:
                struct BT
                {
                        int data;
                        BT *l;
                        BT *r;
                };
                struct BT *p;
       public
                ARB();
                ~ARB();
                void del(int n);
                void add(int n);
};

    void ARB::del(int num)
{
//The code ,don't care about it

  };

main()
{
//
    BTR T;
    T.add(3);
    T.add(5);

};

但是我来到了大程序
如何定义必须使用二叉树并获取堆栈的方法
STACK ARB::MyFunct(BT* p)
{
// The code don't care about it
}

我如何在主程序中应用它
main()
{
//
    BT T;
    T.add(3);
    T.add(5);
    STACK S;
    BT* p
    S=T.MyFunct(p); // error C2664 cannot convert parametre 1

};

**提及:我实现了STACK类

最佳答案

这里有几个问题。一方面,add()是ARB的成员函数,而不是BT。而且,BT是ARB的私有(private)子类,因此无法从main()访问。 p是ARB的私有(private)成员(应该如此),但是它实际上应该是直接变量,而不是指针,因此它将由ARB自动创建和销毁。照原样,永远不会初始化p,并且无法从ARB外部进行初始化。

我在这里猜测,ARB将其内部BT p用于内部存储,因此add()和del()的实现都在p上运行,而MyFunct()应该采用该BT并从中生成堆栈。如果是这样,MyFunct()应该不带参数,而直接引用p。

所以main()看起来像:

ARB arb;
arb.add(3)
arb.add(5)
STACK s = arb.myFunct(); // which should maybe be makeStack() or such

所有这些都假设我已经正确地推断出您的意图。

关于c++ - 解释器如何在主C++类中编写函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2549801/

10-11 23:17