如何確定一個類是否沒有派生類?任何類型特徵方法都有幫助?如何確定一個類是否沒有派生類?
我想寫出一些數據。這些數據是通過一個像這樣的指針創建的
unique_ptr<A> a(new A);
如果A類沒有子類,我只寫出數據內容。如果A有子類,我會先寫出它的具體類型,然後寫出數據內容。在讀取數據時,在讀取具體類型之後,我知道使用什麼具體類型來創建指針,然後讀取數據內容。因此,我認爲我必須確定A是否具有子類別?
如何確定一個類是否沒有派生類?任何類型特徵方法都有幫助?如何確定一個類是否沒有派生類?
我想寫出一些數據。這些數據是通過一個像這樣的指針創建的
unique_ptr<A> a(new A);
如果A類沒有子類,我只寫出數據內容。如果A有子類,我會先寫出它的具體類型,然後寫出數據內容。在讀取數據時,在讀取具體類型之後,我知道使用什麼具體類型來創建指針,然後讀取數據內容。因此,我認爲我必須確定A是否具有子類別?
在C++ 11,你可以聲明一個類最終:
什麼,你可以檢查,如果一個類從另一個派生的。這可以確保沒有任何類可以從中派生出來。請參閱http://en.cppreference.com/w/cpp/language/final。
這是不可能的,因爲一個類不知道什麼(如果存在)類從它派生。
struct foo {};
struct bar : foo {};
static_assert(std::is_base_of<foo,bar>::value);
你想解決什麼問題?可能有更好的方法。這聽起來像是[X-Y問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 –
由於單獨編譯,我不認爲這是可能的。我同意你應該發佈你想要完成的事情。 – delnan
只需使用多態。這就是它的發明。 – juanchopanza