是否可以调用移动对象的成员函数?

时间:2018-01-15 15:28:44

标签: c++ c++14 move swap

假设我有一个类Foo,其成员变量类型为std::vector<Bar>

class Foo;

class Bar
{
public:
    int x;
    Foo* parent;
    void trigger(size_t i);
};


class Foo
{
public:
    std::vector<Bar> arr;
    void moveBack(size_t i);
};

void Bar::trigger(size_t i)
{
    parent->moveBack(i);
}

void Foo::moveBack(size_t i)
{
    std::swap(arr[i], arr[arr.size()-1]);
}

int main()
{
    //...Init foo of type Foo and fill the arr
    foo.arr[3].trigger(3);
}

我想知道上面的代码是危险还是未定义的行为。基本上,Bar类型的对象正在自行移动。

编辑:添加了前向声明

0 个答案:

没有答案