对于某个项目,我被要求使用VST
创建Steinberg SDK
,我使用的是2.4版。
我遇到的问题是错误:
cannot allocate an object of abstract type 'mySynth'
。
尝试编译时,错误将我带到这部分代码:
AudioEffect* createEffectInstance (audioMasterCallback audioMaster)
{
return new mySynth (audioMaster);
}
我是c ++和VST
编程的初学者,我在编译样本AGain
和ADelay
以及vstxSynth
时没有遇到任何问题。这是我自己的第一次尝试,而且我真的很困惑,从查看示例代码我似乎无法找到任何理由为什么这不起作用。
任何帮助将不胜感激。由于这对我来说是一个主要的学习曲线,如果您能够尽可能简单地解释,我将不胜感激。
谢谢你:)
答案 0 :(得分:2)
没有看到类mySynth
代码,很难说,但是当你有一个包含纯虚函数的类时,通常会遇到这个错误。或者您是从具有纯虚函数的基类派生的,并且无法使用派生类实现覆盖它。
如果您不知道这意味着什么,请在您的类(和子类)中查找声明为此的函数
virtual int my_function() = 0;
这种函数是纯虚函数,有一个函数被认为是一个抽象类,无法实例化。为此,您需要提供一个实现。
答案 1 :(得分:0)
您的processReplacing()
方法未正确覆盖基类AudioEffect
中声明的签名。签名如下所示:
void processReplacing(float** inputs, float** outputs, VstInt32 sampleFrames);
您的替换正在使用double
,而应使用float
代替。