gpt4 book ai didi

c++ - 解释器如何在主要的 C++ 类中编写函数

转载 作者:太空狗 更新时间:2023-10-29 23:20:14 24 4
gpt4 key购买 nike

我正在从事一个关于数据结构的项目。首先,我在 main 中编写了所有内容,但听起来像 C 。但据我了解,我尝试考虑 OOP 并尽可能少地在我的 main() 方法中做事。

我已经在我的类中实现了一些操作,如添加、删除、查找。实现它太容易了。

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com