我要执行以下操作,正在编写图形库。我希望我的课程应该是模板。
template < typename T>
class Graph
{
}
该Graph类适用于另一个
class Vertex
我应该如何设计此
Vertex
类,以便我的任何团队成员都可以使用,而不必更改class Graph
中的实现基本上我希望这个
Vertex
类提供几个成员函数,例如getWeight
,getvisited
,setvisited
因此,只要客户端在其中具有这些功能,类
Graph
类就可以直接使用 最佳答案
通常,图类不会做很多事情,因为所有数据都在顶点或边缘中(取决于对象表示的对象-听起来像您想要顶点对象)。
所以,你可能有
template< typename T >
struct Vertex {
bool visited;
T data;
vector< Vertex * > edges;
size_t getWeight() const { return edges.size(); }
bool getvisited() const { return visited; }
void setvisited( bool v ) { visited = v; }
};
您可能希望图形玻璃拥有所有顶点,并在尝试销毁它时防止出现断线或循环问题。
template< typename T >
struct Graph {
typedef Vertex< T > vertex_t;
deque< vertex_t > vertices;
vertex_t &get_vertex() {
return * vertices.insert( vertices.end(), vertex_t() );
}
};
…并使
Vertex
的构造函数私有,并对其friend
进行图形化处理,以使Graph
是获得顶点的唯一方法。关于c++ - C++设计模式建议,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3858550/