Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 指向树头的指针_C++_Oop_Pointers - Fatal编程技术网

C++ 指向树头的指针

C++ 指向树头的指针,c++,oop,pointers,C++,Oop,Pointers,(基本上,这个类创建了一棵左右各有两片叶子的树(另外两棵树),每棵树都有两片叶子,以此类推。) 所以我这样做了: Tree temp(5); Tree* tem = &temp; temp.SetInfo(10); temp.SetLeft(5); temp = temp.GetLeft(); cout << tem->GetInfo(); 树温度(5); 树*tem=&temp; 温度设置信息(10); 温度设定值(5); temp=temp.GetLeft();

(基本上,这个类创建了一棵左右各有两片叶子的树(另外两棵树),每棵树都有两片叶子,以此类推。) 所以我这样做了:

Tree temp(5);
Tree* tem = &temp;
temp.SetInfo(10);
temp.SetLeft(5);
temp = temp.GetLeft();
cout << tem->GetInfo();
树温度(5);
树*tem=&temp;
温度设置信息(10);
温度设定值(5);
temp=temp.GetLeft();
coutgetinfo();
希望tem会指向树的头部,但它只是跟随temp。。 有没有一种方法可以轻松做到这一点

你们能帮我上课吗? 我很难将指针和类结合起来:

谢谢

希望tem会指向树的头部,但它只是跟随temp

当然,它将指向
temp
,因为这里:

Tree* tem = &temp;
您可以用
temp
的地址分配它。然后

temp = temp.GetLeft();
您可以更改
temp
,并将其留给孩子们。但是
tem
仍然指向
temp
,这就是您得到此结果的原因

我看不出有任何理由对其左子项更改
temp
。我可以建议你声明一个新的变量,它将容纳一个左撇子

但首先: 你必须重写你的课程,它有很多错误。至少-内存泄漏。如果你已经(自己)分配了内存,你必须手动释放它

取而代之的是,使用智能指针,不要使用带有
Tree*
的构造函数作为参数。这可能很危险

因此: 一次学完所有的东西真是太好了但这不起作用

  • 学习如何使用指针(与使用类分开)
  • 学习如何使用类(与使用指针分开)
  • 一起学习指针和类

tem是指向temp的指针,因此当您更改temp时,tem也将指向新值。那么我应该怎么做才能使tem指向temp树的顶端?是的,我看到我在那里犯了一个错误。。我正在尝试创建一个树,所以我必须将temp向左和向右移动,我上面给出的示例是我尝试做的一个简短版本。有没有一种方法可以创建指向树顶部的指针,而不必使其跟随temp?关于这门课,我以后会解决的,我这么做是因为我不知道如何解决一些问题,我以后会处理,谢谢!顺便说一句,我确实学会了如何单独使用它们,一起使用它们?。。是 啊不是我的强项(+我找不到一个关于它的好教程,我的书也没有教…)正如我已经说过的,你可以声明一个新的
对象,并将其分配给左子对象。那么,你可以单独使用它。我实际上不能这样做。S:有没有一种方法可以只使用一个树对象来实现这一点(当我说我不能,这是因为我使用递归函数,我只需要处理一个树对象(在这个函数中同时使用左和右将是一件痛苦的事情))@NaorHadar,另外,最好展示一下,你想解决什么问题。也许存在一个更简单的解决方案。
temp = temp.GetLeft();