古いコードでは、あまり書かれていないコードに新しい機能を追加する必要があります。画面に表示され処理される必要のある50種類のリストがあり、それらの現在のコードは、DAOデータベース内のリストとマップ内の他の2種類の小さな変更を含むすべてのカットアンドペーストです。C++の関数に異なる値型のマップを渡す
私は、機能を提供するSearchクラスと、Searchによって必要とされる基本機能を提供するための各リストタイプのヘルパークラスを作成しました。マップヘルパークラスは、tstring Keyへのアクセスのみを必要とし、異なるObject Valuesは必要ありません。しかし、私はこれをコンパイルすることはできません。
さまざまなdifferentObjectは関係がないので、私は基本的に空のSearchValueクラスを定義し、それをすべてのdifferentObjectクラスのスーパークラスとして.hに追加しました。例として
は、ここにマップする定義のいずれかである:
class MyPatListEntry : public SearchValue {
およびIとしての機能を定義した:
typedef map<tstring, MyPatListEntry *, tstringcomp> patlist;
MyPatListEntryが定義され
ListHelper(map<tstring, SearchValue *> *map, CString fieldName)
コンパイラ(VC++)は、ListHelper()の定義がすべての引数を処理しないというエラーを返します。定義でSearchValueをMyPatListEntryに置き換えると、コンパイルが機能するので、基本形式は正しいです。
私はサイトを見回して、この種のことを機能テンプレートで行うことを提案していましたが、それはうまくいくと思いますが、何らかの理由でこの方法が機能しないのか不思議です。
ありがとうございました。
'MyPatListEntry'がタイプ' SearchValue'ですが、 'map'はタイプ 'map 'ではありません。 –
Dialecticus