我試圖擴展一些我無權訪問的類的功能。基類和派生類的運行時類型信息
基本上我試圖爲記錄目的創建一個toString/toXML方法。我想創建一個單身人士(本質上是一張地圖),我可以註冊不同的功能,並以全球可用的方式提供這些功能,所以我可以擁有像string Singleton::toString(void* or abstractObject*)
這樣的東西,它可以根據類型從地圖中選擇正確的方法。
儘管我可以通過typeid獲取類型信息,但我希望能夠爲基類實現它,然後讓所有派生類都使用該方法,除非我有更接近/更合適的方法。
這是可能的,或者我應該改變爲不同的方法(可以模板做到這一點)?不幸的是,我無法訪問這些類,因爲它們大多數來自第三方庫。
如果他們在第三方庫會怎樣'abstractObject *'幫你? 'abstractObject'是否已經作爲一個類型存在? – Flexo
大多數庫來自(各自的)基礎對象。我更喜歡一個通用的解決方案,但是如果通過庫/基礎對象進行分裂使其成爲可能,那麼這可能是一種可行的方法,儘管這是一個不好的解決方案。 – Darcara
大多數類(甚至是第三方)都通過'operator <<'進行序列化。嘗試使用這個,看看它是否打印到流中。 –