可以说我有以下类,它改变从其他接口接收到的数据。具有不同签名的功能专门化
template <class T>
class Updater
{
public:
Updater():
_db(Database<T>())
{
}
void append(T value)
{
std::list<T> l = _db.get();
l.push_back(value);
_db.set(l);
}
void remove(T value)
{
std::list<T> l = _db.get();
l.remove(value);
_db.set(l);
}
private:
Database<T> _db;
};
所以我用这个整数和浮动和喜欢。我得到一个链表,我操纵它。
但可以说,我想用这个类在以下类型的工作:
std::pair<std::string, std::shared_ptr<void>>
也就是说,与名字相关联的内存块。
我可以使用上面的append函数,在将它传递回数据库之前,将更多内存添加到链接列表中。但是,如果我想删除基于名称(这对字符串的一部分)块,我想我可以如下用专业化解决这个问题:
template <>
void MultiValue<std::pair<std::string, std::shared_ptr<Block>>>::remove(std::string value)
{
}
,但它不会编译,抱怨不兼容与以前的定义。
关于如何解决这个问题的任何建议?
也许你可以实现自定义的比较? – GWW 2012-07-12 14:47:13