可以說我有以下類,它改變從其他接口接收到的數據。具有不同簽名的功能專門化
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