【发布时间】:2016-11-01 22:53:45
【问题描述】:
我有一个类族,每个子类都需要一个映射,但是键将具有不同的类型,尽管它们都将对映射执行完全相同的操作。两种情况下的值也都是字符串。 到目前为止,我的代码类似于下面的示例,我的目标是重用代码,通过 有一个通用键。 除了 STL 之外,不使用任何其他库
class A{
public:
/*
* More code
*/
};
class subA1 : public A{
public:
void insertValue(long id, std::string& value){
if(_theMap.find(id) == _theMap.end())
{
_theMap[id] = value;
}
}
private:
std::map<long,std:string> _theMap;
};
class subA2 : public A{
public:
void insertValue(std::string& id, std::string& value){
if(_theMap.find(id) == _theMap.end())
{
_theMap[id] = value;
}
}
private:
std::map<std::string,std:string> _theMap;
};
【问题讨论】:
-
你是什么意思通用密钥?另一个模板?
std::variant? -
子类之间除了地图类型不同,还有其他区别吗?
-
balki:两个子类执行非常不同的操作,但地图中数据的存储和检索是相同的,还有一些共同的代码
-
@ulitosCoder 在这种情况下,这个解决方案应该可以工作:stackoverflow.com/a/40370038/463758