共享块类型的设置向量有效(pHead->nBlockUse错误 我试图将C中的示例导入C++,以便学习C++。

共享块类型的设置向量有效(pHead->nBlockUse错误 我试图将C中的示例导入C++,以便学习C++。,c++,vector,C++,Vector,我在更新共享_ptr的向量时遇到了一个奇怪的错误,我假设该向量与内存有关,因为我只在代码迭代三次后才遇到这个错误 _块类型是有效的pHead->nBlockUse 在我的代码中,我使用了一个名为Transformation的类,该类包含有关二维变换的数据,如平移、旋转和缩放。然后,一个关键帧由一个帧编号和一个这样的变换定义。一组关键帧定义了一个KeyframeAnimation。最后,SkeletonAnimation是一组KeyframeAnimation,每个帧对应一个骨骼中的ne 在我的S

我在更新共享_ptr的向量时遇到了一个奇怪的错误,我假设该向量与内存有关,因为我只在代码迭代三次后才遇到这个错误

_块类型是有效的pHead->nBlockUse

在我的代码中,我使用了一个名为Transformation的类,该类包含有关二维变换的数据,如平移、旋转和缩放。然后,一个关键帧由一个帧编号和一个这样的变换定义。一组关键帧定义了一个KeyframeAnimation。最后,SkeletonAnimation是一组KeyframeAnimation,每个帧对应一个骨骼中的ne

在我的Skeleton类中,我有一个类型为Transformation std::vector _localTransforms;的向量。它是从SkeletonAnimationPlayer设置的,该播放器首先更新当前动画的变换,然后通过播放器上的Apply方法将变换设置到骨架上

//SkeletonAnimationPlayer
std::vector<std::unique_ptr<KeyFrameAnimationState>> _jointAnimations;

void SkeletonAnimationPlayer::Update(float elapsedSeconds)
{
    for(auto i = 0; i < _jointAnimations.size(); i++)
    {
        _jointAnimations[i]->Update(elapsedSeconds);
    }
}

void SkeletonAnimationPlayer::Apply(Skeleton& skeleton)
{
    for(auto i = 0; i < _jointAnimations.size(); i++)
    {
         skeleton.SetLocalTransform(i, *_jointAnimations[i]->CurrentKeyFrame);
    }
}

//Skeleton
std::vector<std::shared_ptr<Transformation>> _localTransforms;

void Skeleton::SetLocalTransform(int jointIndex, Transformation& transform)
{
    //When debugging this line seems to cause the error
    _localTransforms[jointIndex] = std::shared_ptr<Transformation>(&transform);
}

//Main
_animationPlayer->Update(deltaTime);
_animationPlayer->Apply(*_skeleton.get());
_localTransforms[jointIndex].reset(&transform);