提供一个通用框架来访问c ++中的map / list / vector

时间:2016-12-05 21:42:50

标签: c++ templates stl

我正在尝试提供一个通用框架来将地图或矢量(如果可能的列表)写入文件。 我的实现包含一个抽象类class CStorage,它将用于提供读取和写入文件的接口。

例如。我有两个不同的数据库要写入两个不同的文件 - 一个使用map作为类中的私有成员来存储数据,另一个数据库使用list作为类中的私有成员来存储数据。

现在有一种方法可以提供一个通用实现(在class CGeneralContainer中)来访问从上面提到的抽象类派生的类中的listmap({ {1}})?

我知道模板可以用于通用实现。

模板可以用于这种用例吗?

下面是相同的伪代码:

CStorage

如果class CPlace { /* * class describing the name, lat and long of a place. */ CPlace(); ~CPlace(); private: string m_name; double m_latitude; double m_longitude; } class CPlaceDB { /* * Database class, which holds the map of different place. */ CPlaceDB(); ~CPlaceDB(); typedef std::map<string,CPlace> PlaceMap; private: PlaceMap m_placeMap; } class CStorage { /* * abstract class providing interface to read and write to a file. */ CStorage(); ~CStorage(); virtual bool writeData(const CPlaceDB& w_PlaceDB) = 0; //write the database to a file virtual bool readData(CPlaceDB& r_PlaceDB) = 0; //read database from file. } class CGeneralContainer : public CStorage { /* class which would provide a general implementation * to read and write a map or a list or a vector */ } 对新类型typedef std::map<string,CPlace> PlaceMap;进行了更改,那么我想使用相同的typedef std::list<CPlace> PlaceList来使用与先前实现的方法相同的方法读取和写入文件。

0 个答案:

没有答案