好了,所以我有一個看起來像兩個類:修改常量參數參考
class Item
{
private:
HANDLE Parent;
public:
Item(const Item &I) = delete;
Item(Item &&I) = delete;
void SetParent(HANDLE Handle);
Item& operator = (const Item &I) = delete;
Item& operator = (Item &&I);
};
void Item::SetParent(HANDLE Handle)
{
this->Parent = Handle;
}
Item& Item::operator = (Item&& I) {/*Do Move Here*/}
class Box
{
private:
HANDLE Handle;
public:
void Add(const Item &I);
};
void Box::Add(const Item &I)
{
I.SetParent(this->Handle); //Error.. Item I is const.
}
我得到的錯誤,我有const是有道理的,但我需要一種方法來項目的setparent我不失能力構建我在的地方像這樣:
Box B(Item());
代替:
Item I;
Box B(I);
任何想法如何,我可以保持在線construc我可以通過調用SetParent來修改它嗎?
Rvalues引用。 – Xeo
這是否意味着我必須創建兩個函數?一個只需要一個引用(非const)和一個需要RValue引用,這樣我就不會失去非內聯構造? – Brandon
是的,它需要兩個構造函數 - 或者只有一個,如果你可以使它成爲一個模板(請參閱「通用參考」)。 – Xeo