我有一个名为Generator的接口,如下所示:
class Generator{
public:
virtual float getSample(Note ¬e)=0;
};
我的Synth
类正在实现它,如下所示:
class Synth : public Generator{
public:
virtual float getSample(Note ¬e);
};
float Synth::getSample(Note ¬e){
return 0.5;
}
我正在尝试从我的Note类(具有生成器成员)调用getSample方法
class Note : public Playable{
public:
Generator *generator;
virtual float getValue();
};
float Note::getValue(){
float sample = generator->getSample(*this); // gets stuck here
return sample;
}
当我尝试运行时,它会卡在上面代码中的标记行上。问题是我没有收到非常明确的错误消息。这是我一旦停止就能看到的:
答案 0 :(得分:3)
好像你从未初始化成员Note::generator
,因此调用它上面的函数是未定义的行为。
尝试,作为测试:
float Note::getValue(){
generator = new Synth;
float sample = generator->getSample(*this); // gets stuck here
return sample;
}
如果有效,请返回并查看您的逻辑。使用std::unique_ptr<Generator>
而不是原始指针。为Node
创建构造函数。在那里初始化指针。