rendered paste body#ifndef __NAMEDVECTOR_HPP__#define __NAMEDVECTOR_HPP__#include <string>#include <vector>using namespace std;template <class T> class NamedVector {public: NamedVector(); NamedVector(const string & name); void setName(const string& name); const string& getName() const; void add(const T & data); void del(int index); const T& at(int index) const; void replace(int i, const T & data); int size() const; protected: string m_name; vector<T> m_vector;};#endifusing namespace std;template <class T> NamedVector<T>::NamedVector() { setName(string("")); }template <class T> NamedVector<T>::NamedVector(const string & name) { setName(name); }template <class T> void NamedVector<T>::setName(const string& name) { m_name = name; }template <class T> const string& NamedVector<T>::getName() const { return m_name; }template <class T> void NamedVector<T>::add(const T & data) { m_vector.push_back(data); }template <class T> void NamedVector<T>::del(int index) { m_vector.remove(index); }template <class T> const T& NamedVector<T>::at(int index) const { return m_vector.at(index); }template <class T> void NamedVector<T>::replace(int i, const T & data) { m_vector.replace(i, data); }template <class T> int NamedVector<T>::size() const { return m_vector.size(); }#ifndef __ROAD_HPP__#define __ROAD_HPP__#include <string>using namespace std;class Road : public NamedVector<float> {public: Road(const string & name); Road();};#endifusing namespace std;Road::Road() : NamedVector<float>() {};Road::Road(const string & name) : NamedVector<float>(name) {}using namespace std;int main(void) { Road *r = new Road(); r->add(20.0); delete r; return 0;}