我有一個Track
類,其中包含一個包含Note
對象的多圖構件。一個的Note
類的方法是這樣的:將當前對象傳遞給方法,參考或指針
float Note::getValue(){
float sample = generator->getSample(this); // not working
return sample;
}
Note
還具有Generator
類型的成員,我需要調用類,它需要一個Note
作爲參數的getSample
方法。我需要通過當前的Note
對象,並嘗試使用關鍵字this
這樣做,但這不起作用,並給我錯誤Non-const lvalue reference to type 'Note' cannot bind to a temporary of type 'Note *'
。
這是什麼getSample
該方法的定義是這樣的:
virtual float getSample(Note ¬e);
正如你可以看到我使用了一個參考,因爲這種方法被稱爲非常非常頻繁,我不能複製的對象。所以我的問題是:任何想法我可以做到這一點?或者,也許改變我的模型,可以工作?
編輯
我忘了提及,我也一直在使用generator->getSample(*this);
嘗試,但這個是行不通的兩種。我收到此錯誤信息:
Undefined symbols for architecture i386:
"typeinfo for Generator", referenced from:
typeinfo for Synth in Synth.o
"vtable for Generator", referenced from:
Generator::Generator(Generator const&) in InstrumentGridViewController.o
Generator::Generator() in Synth.o
Generator::Generator(Generator const&) in InstrumentGridViewController.o
Generator::Generator() in Synth.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
這是我的Generator
類是什麼樣子(在的getSample方法在子類中實現):
class Generator{
public:
virtual float getSample(Note ¬e);
};
我也試過,但它不工作,更新我的文章。 – networkprofile
@Sled這是一個完全不同的問題。你爲什麼沒有發佈錯誤信息開始?你爲什麼不張貼真實的代碼?無論如何 - http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error-and-how-doi-i-fix處理這些錯誤。 –
我以爲使用'getSample(* this);'也是錯誤的(因爲它不工作),所以我只是第一個出錯的方式。真正的代碼是什麼意思? – networkprofile