-1

For a project, I am being asked to create a VST using the Steinberg SDK, i'm using version 2.4.

The issue that I'm having is error:

cannot allocate an object of abstract type 'mySynth'.

When attempting to compile, the error brings me to this section of code:

    AudioEffect* createEffectInstance (audioMasterCallback audioMaster)
    {
            return new mySynth (audioMaster);
    }

I'm a beginner to both c++ and VST programming, I've had no issues compiling the sample AGain and ADelay, as well as the vstxSynth. This is the first attempt of my own, and its really confusing me, from looking at the sample code i cannot seem to find any reason as to why this shouldn't work.

any help would be greatly appreciated. As this is a major learning curve for me, i would appreciate if you could apply with a simplest explanations as possible.

Thankyou :)

4

2 に答える 2

2

クラスmySynthコードを見ないと言うのは難しいですが、このエラーは、純粋仮想関数を含むクラスがある場合によく発生します。それか、純粋仮想関数を使用して基本クラスから派生し、派生クラスの実装でオーバーライドできませんでした。

それが何を意味するのかわからない場合は、クラス(およびサブクラス)で次のように宣言された関数を探してください

 virtual int my_function() = 0;

この種の関数は純粋仮想関数であり、それを持つクラスは抽象クラスと見なされ、インスタンス化できません。そのためには、実装を提供する必要があります。

于 2012-11-08T22:36:51.140 に答える
0

processReplacing()メソッドは、基本クラスで宣言された署名を正しくオーバーライドしていませんAudioEffect。署名は次のようになります。

void processReplacing(float** inputs, float** outputs, VstInt32 sampleFrames);

オーバーライドはを使用しています。代わりdoubleにを使用する必要があります。float

于 2012-12-05T09:47:38.007 に答える