我的代碼,爲什麼編譯器不提供默認的operator =模板類?
template<typename T>
class NamedObject{
public:
NamedObject(std::string& name, const T& value):nameValue(name), objectValue(value)
{
}
private:
std::string& nameValue;
const T objectValue;
};
int main(int argc, char* argv[])
{
NamedObject<int> obj1(std::string("Obj1"),3);
NamedObject<int> obj2(std::string("Obj2"),3);
obj2 = obj1; //this line gives error
return 0;
}
我得到錯誤,
錯誤1個錯誤C2582: '運算符=' 功能是 'NamedObject' C不可用:\用戶\ pkothari \文檔\ Visual工作室 2008 \項目\ stackoflw \ stackoflw \ stackoflw.cpp 39
我還沒有提供任何運營商=,不應編譯器提供默認嗎?
@編輯爲顯示爲重複:我同意const,引用可以引用另一個對象的成員。
你寫了一個非默認構造函數,所以沒有編譯器提供'operator =' –
@PasserBy,這是不正確的。構造函數與'operator =' – Ajay
@Ajay沒有任何關係哦,哎呀,這是我記憶中修復的一個洞 –