我有一個圖類Graph
和兩個類Pqueue1
和Pqueue2
的優先級隊列。兩個優先級隊列都具有Pqueuei(Graph &g)
形式的構造函數,其中i
= 1
,2
並且它們都具有形式爲的方法Dijkstra
。最短路徑樹被寫入g
。函數指針指向不同類的方法
現在我想寫一個函數,根據某些條件(密度爲g
)構造兩種優先級隊列,然後調用相關的Dijkstra
方法。
這怎麼辦?
我考慮一個函數指針dijk
但由於兩者都是一類的方法我需要以不同的調用它們,或者pq1.*dijk
或pq2.*dijk
(其中pq1
是Pqueue1
類型等的目的)。但是,那麼我將不得不先建立兩個優先級隊列,這是不理想的。
這和C有什麼關係?不要垃圾標籤!你的問題太廣泛了。我們不是諮詢/輔導網站。 – Olaf
您需要兩個類從一個公共基類派生,並使dijkstra方法變爲虛擬。不需要涉及函數指針。 –
這是一個典型的問題通過多態性解決:http://www.cplusplus.com/doc/tutorial/polymorphism/ –