タイプを適応させると想定される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 を使用します。これらを動的に変更できるようにしたいので、使用しません。本当に専門)
コンパイル時 (私がいくつか書きます) または実行時 (ユーザーがいくつか書きます) に型コンバーターをプラグインしたいだけです。私はこれらがかなり高速であることを望んでおり、私が書いたコンバーターが組み込まれているため、より高速であることを望んでいます.
何か案は?