如何定义一个抽象的Graph类来保存其节点中的任何类型的数据?

时间:2016-11-16 06:47:49

标签: c++ graph

我需要在C ++中定义一个抽象基类,它可以在其节点中保存任何类型的数据。我将在派生类中扩展功能,其中我将指定要保留的表示形式(Matrix或List)。

例如:

Graph<char> *g = new AdjListGraph<char>(10);
g->addEdge(0,1,'c');
Graph<int> *g = new AdjListMatrix<int>(10);
g->addEdge(0,1,100);

最后我想用它如下:

+

我遇到的问题是继承类时。由于基类是一个模板,我希望在继承它时指定类的类型。但这涉及为多种类型的数据重写相同的代码。而且,如果我将自定义对象存储在图表中,那么期望每种类型的专业化将会非常繁琐。

有没有办法绕过这个限制做我打算做的事情?

1 个答案:

答案 0 :(得分:0)

  

由于基类是一个模板,我希望在继承它时指定类的类型。

它与继承模板的类型参数类型相同。

template<class T>
class AdjListGraph : public Graph<T> 
{

};