我想知道我是否做得正确。我有一个保存一些数据的类:
class Foo {
// ...
Type a_;
Type b_;
Type c_;
};
还有一个不同的类,它执行其他操作,但是使用 class Foo
进行构造。因此,我建议声明一个像这样的构造函数:
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&&);
};
我现在需要创建一个名为
Foo
的方法,它将返回Bar
所需的数据成员的元组,我可以将其传递给Bar
的构造函数。我还为Tuple
创建了一个右值引用,因为class Foo
的这些数据成员除了通过class Bar
之外不再需要,所以为什么要复制数据,而不是移动它呢?因此,我在
class Foo
中创建了可返回Tuple
的方法。特别是,我需要一个可以由使用右值引用的Bar
构造函数使用的方法。以下内容是否正确?auto Foo::move_data() -> Tuple&& {
return std::move( Tuple(a_, b_, c_) );
}
或者这个完全是错的吗?(指出任何其他愚蠢的东西也会受到赞赏。当然,我省略了一些typedef和其他不必要的细节。)
Foo
和Bar
有共同的数据,为什么不将它放在同一个类ABC
中,并使用组合将其同时放在Foo
和Bar
中呢? - Julien Guertaultclass ABC
对象?好问题...(啊,我有一个很好的理由:这样我就可以学习和练习使用一些新的C++11花哨东西!) - Zorawar