I want to do following, I am writing Graph library. I want my class should be template.

```
template < typename T>
class Graph
{
}

```

This Graph class works on another `class Vertex`

How should I design this `Vertex` class so that any of my team members can use and I do not have to change my implementation in `class Graph`

Basically I want this `Vertex` class to provide couple of member function like `getWeight`, `getvisited`,`setvisited`

So as long as client have these function in there class `Graph` class can be used as it is