在這個模板函數中,我試圖從boost ptr_map中檢索元素。爲了清晰起見,我省略了錯誤處理代碼。分配給參考時,爲什麼會出現此錯誤(C2582:'operator ='功能在'B'中不可用)?
template <typename K, class T>
class A
{
public:
void TryGet(const K &key, T &o) { o = mObjects.at(key); }
private:
boost::ptr_map<K, T> mObjects;
};
typedef A<std::string, B> myClass;
我得到編譯器錯誤C2582:'operator ='函數在'B'中不可用。爲什麼將mObjects.at()的返回值賦值給引用需要訪問實例化類的賦值運算符?什麼是返回這個值的正確方法?
你'TryGet'聲明爲返回一個'bool'但沒有'return' – user463035818
爲什麼分配需要分配?呃... –
它可能與'B'有關,你沒有顯示。 – nobar