最近遇到了一個新的C++鏈接器錯誤。 libfoo.so: undefined reference to `VTT for Foo'
libfoo.so: undefined reference to `vtable for Foo'
我意識到錯誤並解決了我的問題,但我仍然有一個嘮叨的問題:VTT到底是什麼? 旁白:對於那些有興趣的人,當你忘記定義在類中聲明的第一個虛函數時會出現問題。 vt
我試圖實現一個實現了很多接口的相當大的對象。其中一些接口是純虛擬的。我可能在鑽石繼承方面存在問題。 Visual Studio報告了C4250 ('class1' : inherits 'class2::member' via dominance)的警告。首先,所有這些類都是按照它應該的那樣實際繼承的。以下是導致此問題的部分類設計。 A B C
\ /\ /
\ / \ /
有一個little related question。但話題完全不同。 現在,一個概念是關於功能分辨率和另一個是關於class分辨率?我想知道如果他們使用相同的vtable(at least in gcc-4.5)怎麼可能?這是一個與編譯器相關的術語嗎? 我知道這可能是一個基本的愚蠢問題,但我從來沒有想過它。
這個問題來自另一個類似的問題。有時我必須處理這種情況。 你知道,如果在面向對象編程中存在一個特別的名字,對於已申報virtual一個初步的方法,那就是故意不abstract,但是,什麼也不做,或者沒有任何代碼,但,也許叫? 這個例子是僞代碼,但是,適用於任何O.O.編程語言: public class MyBaseClass
{
public abstract virtual void