我正在尝试提供一个通用框架来将地图或矢量(如果可能的列表)写入文件。
我的实现包含一个抽象类class CStorage
,它将用于提供读取和写入文件的接口。
例如。我有两个不同的数据库要写入两个不同的文件 - 一个使用map
作为类中的私有成员来存储数据,另一个数据库使用list
作为类中的私有成员来存储数据。
现在有一种方法可以提供一个通用实现(在class CGeneralContainer
中)来访问从上面提到的抽象类派生的类中的list
和map
({ {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
来使用与先前实现的方法相同的方法读取和写入文件。