I want to know if I'm doing this right. I have a class that holds some data:
class Foo {
// ...
Type a_;
Type b_;
Type c_;
};
And a different class that does something else, but is constructed using class Foo
. So, I reckon declare a ctor like this:
class Bar {
Type a_;
Type b_;
Type c_;
AnotherType A_;
AnotherType B_;
// ...
public:
typedef std::tuple<Type, Type, Type> Tuple;
Bar(const Tuple&);
Bar(Tuple&&);
};
I now need to create a Foo
method that will return a tuple of the data members that Bar
needs, which I can pass to Bar
's ctor. I also make a rvalue reference for Tuple
because those data members of class Foo
will not be needed anymore except via class Bar
, so why bother copying data when I can move it?
So, I create methods in class Foo
that will a return a Tuple
. In particular, I need one that can be used by the Bar
ctor that uses an rvalue reference. Is the following correct?
auto Foo::move_data() -> Tuple&& {
return std::move( Tuple(a_, b_, c_) );
}
Or is this completely wrong? (Pointing out anything else stupid will also be appreciated. Of course, I've left out some typedefs and other unnecessary details.)
Aucun commentaire:
Enregistrer un commentaire