我正在从事有关数据结构的项目。
首先,我主要写了所有内容,但听起来像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/