2

プラグインフレームワークをプログラミングしています。プラグインはアプリケーションにデータを渡すことになっています。プラグインがデータを置くキューを作成しましたが、プラグインが複数のデータ型(int、bool、char、..)を渡すことができるようにしたいです。 。)1つだけではありません。

それを行うためのアイデアや良い方法はありますか?

4

3 に答える 3

5

Boostライブラリの使用がオプションである場合は、以下を使用することを強くお勧めしboost::anyます。

boost::any a(1234567);
boost::any b(12.3456);
boost::any c(12345LL);
boost::any d(true);
于 2013-01-22T17:18:11.597 に答える
1

デザインの一部として、テンプレートやその他の一般的なプログラミング手法を使用します。

テンプレートのスターターは次のとおりです 。http ://www.cplusplus.com/doc/tutorial/templates/

boost anyを使用することをお勧めしますが、現在受け入れられている回答(依存関係を最小限に抑えたい場合)よりも設計の観点から優れていると思う代替案は、任意のタイプを受け入れて返すテンプレートラッパーの次の非常に単純な実装です。

class IAnyType {}

template <class T>
class AnyType : public IAnyType
{
private:
    T value_;
public:
    AnyType(T value) : value_(value) {}

    void set(T value) { value_ = value; }

    T get() { return value_; }
};

次に、キューにIAnyTypeオブジェクトを保持させ、すべての引数をAnyTypeオブジェクト内に格納してから、キューに追加します。さまざまな代入演算子をオーバーロードして、使用法をさらに簡単にすることで、これを少し整えることができます。

于 2013-01-22T17:24:56.187 に答える
1

charsを使用して、ほぼすべてのものにキャストできます。単純なキャストでは「到達」できないデータ型については、memcpy()を使用することをお勧めします。

于 2013-01-22T17:26:52.893 に答える