我不得不爲一些舊的,寫得不好的代碼添加新的功能。有50個不同的列表需要在屏幕上顯示和處理,而且它們的當前代碼都是剪切和粘貼的,只需對2種不同類型進行小的修改,一種是DAO數據庫中的列表,另一種是地圖中的。將具有不同值類型的地圖傳遞給C++中的函數
我編寫了一個搜索類,它提供了每個列表類型的功能和幫助類,以提供搜索所需的基本功能。映射助手類只需要訪問tstring Key,它不需要不同的對象值。但是,我無法得到這個編譯。
由於各種不同的對象沒有關係,我定義了一個基本上爲空的類SearchValue,並將它作爲所有不同對象類的超類添加到.h中。
作爲一個例子,這裏是地圖定義之一:
typedef map<tstring, MyPatListEntry *, tstringcomp> patlist;
MyPatListEntry定義:
class MyPatListEntry : public SearchValue {
,我已經函數定義爲:
ListHelper(map<tstring, SearchValue *> *map, CString fieldName)
的編譯器(VC++)給出了ListHelper()的定義都不處理所有參數的錯誤。如果我在編譯工作的定義中將SearchValue替換爲MyPatListEntry,那麼基本格式是正確的。
我在網站上看了一圈,發現人們建議這種類型的事情要用功能模板來完成,我想這會起作用,但我很好奇這樣做是否有某種原因不起作用。
感謝您的任何想法。
它不起作用的原因是雖然'MyPatListEntry'的類型是'SearchValue','map'是不是'map '類型。 –
Dialecticus
2012-03-21 11:18:03