2

タイプを適応させると想定される2つのタイプAとBのアダプターパターンを作成しました。これは通常のテンプレート クラスです。問題は、A と B から変換する必要があることです。A と B の型はわかりませんが、後で特化して提供します。

型コンバーターが将来存在することを C++ に伝えることによって、任意の A および B からの変換を許可する方法はありますか?そうでない場合は、エラーがスローされます。(変換する方法がないと仮定する代わりに)

例えば:

template<typename A, typename B> B Converter(A a) { return B(); }

このコンバーターは任意の型で動作しますが、明らかに適切に変換されません。次に、指定したいと思います。

template<> int Converter(int a) { return a/2; }
template<> float Converter(bool a) { return (a) ? 0.45f : 12f; }
template<> int Converter(myType a) { return a.value; }

then, later one, by the "user"(after compilation) I would like to effectively create more converters. For example, I will allow the user to hook into my code and supply converters for their custom types.

改造できると思います

template<typename A, typename B> B Converter(A a) { `Find appropriate converter in list and use that` }

より複雑になりますが、これを行う効率的な方法を探しています。実際、同じタイプの複数のコンバーターを使用できるようにしたいと考えています。

template<> int Converter(int a) { return a/4; }

(したがって、あるケースでは値を半分にカットする int から int へのコンバーターを使用し、別のケースでは a/4 を使用します。これらを動的に変更できるようにしたいので、使用しません。本当に専門)

コンパイル時 (私がいくつか書きます) または実行時 (ユーザーがいくつか書きます) に型コンバーターをプラグインしたいだけです。私はこれらがかなり高速であることを望んでおり、私が書いたコンバーターが組み込まれているため、より高速であることを望んでいます.

何か案は?

4

0 に答える 0