0

我们有这些课程:

struct Intermediate : public std::array<double,3> {};

struct Vector3 : public Intermediate
{
   // ........more ctors.........

   // Modified move constructor (base class)
   Vector3(std::array<double,3> &&v) { ??????? }

   // ........more functionality...........
};

“修改后的”移动构造函数是否像原始移动构造函数一样?

如何实现构造函数?除了 std::array::swap 还有其他方法吗?

4

1 回答 1

2

你可以这样做:

Vector3(std::array<double,3> &&v)
{ static_cast<std::array<double,3>&>(*this) = std::move(v); }

此移动分配v给基类this

但是那个移动构造函数似乎毫无意义。当你move一个数组时,double它无论如何都会做一个副本。double没有移动语义,只有复制语义,并且array<double,N>直接在其中包含数组,因此无法将其移动到另一个对象。

于 2013-02-05T15:30:20.743 回答