分段故障访问功能

时间:2018-09-17 11:53:53

标签: c++11 shared-ptr sfml observer-pattern

我在编码设计模式观察器时遇到了SIGSEGV问题。 我有Subject类,Enemy类(这是具体的Subject),RobotShooter和RobotFighter,它们是两个特定的敌人。 我有Observer类,Achievement类(这是具体的Observer),DemolisherAchievement和SniperAchievement,它们是特定的成就。

问题发生在新敌人注册成就时,似乎甚至无法输入registerObserver方法。

主要:

    std::shared_ptr<DemolisherAchievement> newDem = std::dynamic_pointer_cast<DemolisherAchievement>(dem);
    std::shared_ptr<Enemy> enemy = enemyFactory.createEnemy(Enemy::SubType::robotRed, textures,
            window->getSize());
    int x,y;
    enemyArray[i]->registerObserver(dem); 

在敌人中。h

void registerObserver(std::shared_ptr<Observer> o) override;   //inherited from Subject class 
std::vector<std::shared_ptr<Observer>> observers; //vector of observers

在Enemy.cpp中

void Enemy::registerObserver(std::shared_ptr<Observer> o) {
observers.emplace_back(o);
}

enter image description here

编辑1 经过几次尝试和不同的断点,我看到了 enter image description here

我的shared_ptr始终为NULL,成就定义后对我来说似乎很奇怪

0 个答案:

没有答案