C++ 数据为不同继承类型的二叉树
我有一个基类,其中两个类继承自此,另外两个类继承自此。我需要使用二叉树来存储数据,但是我不太明白如何在树中存储数据。在我看到的示例中,数据只是一个C++ 数据为不同继承类型的二叉树,c++,inheritance,tree,binary-tree,C++,Inheritance,Tree,Binary Tree,我有一个基类,其中两个类继承自此,另外两个类继承自此。我需要使用二叉树来存储数据,但是我不太明白如何在树中存储数据。在我看到的示例中,数据只是一个int data,但我的数据最多可以有四种不同的类型。如果要存储在树中的所有类型都来自同一基类,那么数据成员可以是指向该基类的指针。这样,指针可以指向基类或任何派生类型的对象 例如: 然后你可以做一些类似的事情: node->SetData(new Car); otherNode->SetData(new Moped); 或者无论您有什么
int data
,但我的数据最多可以有四种不同的类型。如果要存储在树中的所有类型都来自同一基类,那么数据成员可以是指向该基类的指针。这样,指针可以指向基类或任何派生类型的对象
例如:
然后你可以做一些类似的事情:
node->SetData(new Car);
otherNode->SetData(new Moped);
或者无论您有什么接口,它都可以设置mData指针,指向从Vehicle派生的类树中的某种类型的对象。问题有点不明确,通常您会使用指针或智能ptr,如
std::shared\u ptr
。您是否有任何代码可以显示,或者这是否足以让您开始使用?我的基类是车辆
,汽车
和摩托车
继承它的属性。然后我有轿车
和敞篷车
继承自汽车
其中轻便摩托车
和摩托车
继承自摩托车
。在示例中,二叉树节点类似于:node*left;节点*右;int数据
但我不能这样做,因为int data
可能是4种不同的继承类型中的任何一种。我不确定我的数据成员的实际类型,因为它可能会根据插入的数据而有所不同。请尝试使用std::shared\u ptr data编码>并研究共享指针的正确使用(例如,使用std::make_shared(…)
创建实例)。如果您遇到问题,请展示您拥有的代码(在新问题中),我相信有人可以提供帮助。
node->SetData(new Car);
otherNode->SetData(new Moped);