假设我有以下类可以更改从其他接口接收到的数据。
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 函数将更多内存附加到链表,然后再将其传递回 db。但是,如果我希望根据名称(对的字符串部分)删除一个块,我想我可以通过如下的专门化来解决这个问题:
template <>
void MultiValue<std::pair<std::string, std::shared_ptr<Block>>>::remove(std::string value)
{
}
但它不会编译,抱怨与以前的定义不兼容。
关于我如何解决这个问题的任何建议?