2012-11-08 53 views
-1

對於某個項目,我被要求使用Steinberg SDK創建VST,我使用的是版本2.4。錯誤:無法分配抽象類型'mySynth'的對象VST編程

是我遇到的問題是錯誤:

cannot allocate an object of abstract type 'mySynth'

當試圖編譯,錯誤使我的這部分代碼:

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

我是一個初學者C++和VST編程,我已經沒有問題,編譯樣本AGainADelay ,以及vstxSynth。這是我自己的第一次嘗試,它讓我非常困惑,從查看示例代碼,我似乎無法找到任何理由,爲什麼這不應該工作。

任何幫助將不勝感激。由於這對我來說是一條主要的學習曲線,如果您能儘可能使用最簡單的解釋,我將不勝感激。

三江源:)

+0

'mySynth'是你自己的班還是VST的? –

+0

我自己的類使用再次作爲基礎構建 –

+0

然後,錯誤意味着基類聲明瞭一些您​​尚未實現的純虛函數。你需要找出你需要實現的功能,以使你的mySynth類具體而不是現在的抽象。 –

回答

2

在沒有看到類mySynth代碼是很難說,但如果有包含純虛函數的類是經常遇到這個錯誤。無論是或者你已經從一個純虛函數的基類派生,並且無法用派生類實現覆蓋它。

如果你不知道這意味着什麼,在你的類(和子類)找聲明如下

virtual int my_function() = 0; 

這種功能功能是純虛函數,並且有一個是一類被認爲是一個抽象類,不能被實例化。爲了做到這一點,你需要提供一個實現。

+0

http://dl.dropbox.com/u/21696319/mySynth.cpp http://dl.dropbox.com/u/21696319/mySynth.h 我已將兩個鏈接添加到我的標題和cpp。謝謝,我現在也會看看你的建議。 –

0

您的processReplacing()方法不能正確覆蓋在基類AudioEffect中聲明的簽名。簽名是這樣的:

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

您的覆蓋使用double,它應該使用float代替。

相關問題