0

MATLAB で作成されたプロジェクトの C++ クローンを作成しています。可能な限りオリジナルに近いコードを「翻訳」したいと思います (MATLAB のような動的に型付けされた言語と C++ のような静的に型付けされた言語との間の避けられない違いを考えると)。

私の質問は、混合型の引数を含めることができる関数パラメーターとしての可変長引数リストについてです。

MATLAB にはvarargin関数パラメーターとして次のものがあります。

 varargin Variable length input argument list.
    Allows any number of arguments to a function.  The variable
    varargin is a cell array containing the optional arguments to the
    function.  varargin must be declared as the last input argument
    and collects all the inputs from that point onwards. In the
    declaration, varargin must be lowercase (i.e., varargin).

Python では、*argsこれを**kwargs非常に快適に処理できます。

C++ でこの種の柔軟性にどれだけ近づけることができますか? 使用すべき標準の引数リスト クラスはありますか?

4

1 に答える 1

1

少数の (単純な) 型の引数のみを渡したい場合、引数std::vector<>として渡すのは非常に単純で簡単です。

通常、次のような構造体を作成します。

struct Option {
    union {
        int Int;
        float Float;
    } Number;
    string String;
};

必要に応じて、ステートメントTypeで使用するために Option 構造体にフィールドを追加できます。switch

C++11 では、共用体で std::string を使用することもできるはずですが、それについて 100% 確信があるわけではありません。

<cstdarg>は別の解決策であり、 などの C 関数を使用している場合に便利ですvsprintf

于 2012-04-21T17:20:40.797 に答える