1
我想構建一個容器來容納基於模板的shared_ptrs。例如,我有:如何使用STL容器來保存基於模板的shared_ptr?
template <class T>
class Data
{
....
};
template <class T>
struct DataPtr {
typedef boost::shared_ptr<Data<T> > type;
};
template <class T>
struct mapData {
typedef typename std::map<std::string, DataPtr<T>::type > type;
};
mapData<int>::type data;
void func(const std::string& str, DataPtr<int>::type& sth)
{
if (sth)
{
data[str] = sth;
}
}
現在我有幾個問題。編譯器不允許我在定義mapData時使用DataPtr :: type,錯誤消息是「期望的類型,得到了'dataPtr :: type」。如果我下降的種類和使用
template <class T>
struct mapData {
typedef typename std::map<std::string, DataPtr<T> > type;
};
然後「數據[STR] =某事物」未通過(「無匹配關於‘操作符=’」)。
什麼應該是正確的方法?
非常感謝。
是的,你是對的。非常感謝! – user3277762