我有一家工廠,有不相關的東西工作的商店。一些商店工作或個人汽車和從那裏派生的班級(汽車,SUV,輕便摩托車)和其他工作的軍車和從那裏派生的班級(坦克,飛機,潛艇)。我可以告訴std :: type_info對象是否等於另一個或從另一個派生的類?
這個問題涉及到我的工廠類,它不關心在商店做什麼,但它提供了一些服務,以確保正確的車輛類型被路由到正確的商店。即如果奧迪A4在裝卸碼頭出現,則需要將其識別爲個人汽車並且發送到個人汽車商店。
我可以在沒有在Factory類中聲明車輛類型的情況下做到這一點嗎?
所以,在更多的C++代碼信息,我想我廠可以有一個std::map<shop *, const std::type_info *>
容器,其中在std::type_info *
由商店提供,並指向基類車輛(例如,個人汽車或軍用車輛)的。 但是......我一直無法找出一種方法來檢查一個對象的一個std::type_info
是否與從該候選者派生的候選對象或相同。
如果工廠至少知道基本車輛類型(個人汽車和軍用車輛),我知道如何使用dynamic_cast<>()
作用於個人自動指針或軍用車輛指針來檢查類型是否相等或者是否派生從基地。但是,我希望儘可能地使工廠儘可能通用。
任何想法?
這將要求每個商店在某種程度上意識到所有商店所做的所有不同類型的東西。即IsMilitary(),如你所建議的那樣,要求個人汽車商店知道其他商店生產軍事材料。 – NoahR 2011-11-17 23:59:10