假设我有一个类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
类型的对象正在自行移动。
编辑:添加了前向声明