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);