Ok donc j'ai deux classes qui ressemblent:paramètre Modifier const référence
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.
}
Je reçois l'erreur que j'est const et qui a du sens, mais je besoin d'un moyen de SetParent de l'article I sans perdre la capacité I construire en place afin:
Box B(Item());
au lieu de:
Item I;
Box B(I);
Toute idée comment je peux garder construc en ligne tion de I tout en étant capable de le modifier en appelant SetParent?
Références Rvalues. – Xeo
Est-ce que cela signifie que je devrais créer deux fonctions? Un qui prend seulement une référence (non-const) et un qui prend RValue Reference pour que je ne perds pas la construction Non-Inline? – Brandon
Oui, il faut deux constructeurs - ou un seul, si vous pouvez en faire un template (lire sur "Universal reference" s). – Xeo