我明顯錯過了某些東西。嘗試引用與const成員通過引用傳遞時刪除的函數
如果我有:
class MyClass
{
public:
const int something;
MyClass(int Something) : something(something) {}
};
這將失敗(試圖引用已刪除的功能),因爲我沒有拷貝構造函數
std::vector<MyClass> myStuff;
std::sort(myStuff.begin(), myStuff.end(),
[](MyClass lhs, MyClass rhs) {
return lhs.something > rhs.something; });
所以我應該按引用傳遞。但即使拉姆達變爲
[](const MyClass& lhs, const MyClass& rhs) {
return lhs.something > rhs.something; });
這是什麼原因?解決方法很明確(不具有const成員變量),但我想知道我在上面的示例中缺少的內容。
'sort'需要移動向量中的物體。你不能這樣做,因爲課程不是可複製或可分配的。 – NathanOliver
@NathanOliver而移動構造函數由於相同的原因而丟失,對吧? – user3804799
是的,複製和移動賦值操作符被刪除,因爲你有一個'const'成員。 – NathanOliver