我的工作序列化系統的覆蓋,和我所有的序列化類實現要求父虛擬功能
virtual void serialize(Buffer buffer);
當指針將被序列化,我需要調用的序列化()函數該類本身,而不是它的任何父母,即使指針是父類型,並且我已經遇到了很多錯誤,因爲我沒有注意到一個子類甚至沒有序列化( ),所以父級序列化()類正被稱爲
即
class A
{
virtual void serialize();
}
class B:public A
{
virtual void serialize();
}
class C:public B
{
virtual void serialize();
}
void doSerialization(A *a)
{
a->serialize();
}
C *c=new C();
doSerialization(c);
現在,如果C沒有序列化函數,B :: serialize()會被靜默地調用。我更喜歡一個錯誤消息,或者其他任何至少會將它指向我的東西。 C++中是否有任何關鍵字(即使是'11)會這樣做?
我想他的意思是,如果C沒有聲明一個,那麼B就會被調用。無論如何,這使得他的發言很有意義。 – jthill 2013-03-01 22:44:22