Comment forcer la copie d'une classe?
Bonjour,
je cherche à forcer la copie d'une instance sur un retour de fonction, mais je n'y arrive pas !
Je sais que ça n'a pas vraiment de sens, mais c'est juste parce que je voudrais tester un truc.
Prenons le code suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| class Foo
{
public:
Foo(int num = 10) : m_num(num) {}
Foo(const Foo& other) : m_num(other.m_num) {}
Foo(const Foo&& other) = delete;
Foo& operator = (const Foo& other) = delete;
Foo& operator = (const Foo&& other) = delete;
int m_num = 5;
};
Foo f(const Foo& foo1)
{
return Foo(foo1.m_num + 1);
}
int main()
{
Foo foo1;
Foo foo2 = f(foo1);
} |
Ça ne compile pas : il veut absolument son move ctor !
Code:
Error C2280 'Foo::Foo(const Foo &&)': attempting to reference a deleted function
Je travaille avec Visual Studio 2017.
Merci par avance :)