問題タブ [variadic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
7660 参照

c++ - なぜ「boost::any」が「void*」より優れているのですか?

とを使用することよりもboost::any、 とboost::any_castが提供する固有の利点は何ですか?void*dynamic_cast

0 投票する
3 に答える
5086 参照

c++ - 可変引数関数の引数の繰り返し使用が機能しない

コンソールとログ ファイルにログを記録しようとする機能がありますが、機能しません。可変長引数を 2 回目に使用すると、コンソールにガベージが書き込まれます。何か案は?

0 投票する
1 に答える
867 参照

c++ - API 関数のラッピング

私は Windows API をラップしており、エラー チェックを使いやすく便利なものにしたいと考えています。set現在、新しいエラーを処理する関数を備えたグローバル エラー オブジェクトがあります。このset関数は 4 つの引数を取ります。bool Error::set (const int code, const char * file, const char * const function, const int line);この関数は、ファイル、関数、および行の引数を使用して、適切にフォーマットされたメッセージで表示します。

エラーの設定を簡単にするために、マクロがあります。#define setError() error.set (GetLastError(), __FILE__, __FUNCTION__, __LINE__);これsetError()により、API 関数を呼び出した後に追加することで、いつでも API 関数が設定したエラーに応答することができます。

残念ながら、これによりコードは次のようになります。

コンストラクターにも問題があります。

ご覧のとおり、メンバー初期化構文を使用することで、実際に自分自身を制限しています。

これを修正する 1 つの方法は、すべての API 関数をラップすることです。

エラー メッセージのfunction一部で、エラーの原因となった関数がわかります。もちろん、それはこれに対処するための最悪の方法でなければなりません。

解決策は、可変個引数テンプレートを使用することです。問題は、彼らをこのために働かせるために私が何をすべきかわからないということです. 最終的なコードは次のいずれかのようになると思います。

可変引数テンプレートの開始に関する記事を読んだことがありますが、このようなものを設定する方法がわかりません。誰かが私を正しい方向に向けることができますか?

同様の質問で次のことがわかりました。

回答者は、これを十分に汎用的にするには可変個引数テンプレートが必要であると指摘しました。それは始まりですが、私は迷子になり、この問題に関する助けに感謝しています.

0 投票する
1 に答える
1954 参照

c++ - バリアントの配列を std::tuple に変換します

C で実装されたバリアント型の C++11 ラッパーに取り組んでいます。バリアント型は、 int 、 float 、 string などの一般的なデータ型だけでなくtuplesもサポートしています。フォームの基本型のコンバーターがあります...

...しかし、std::tuple への変換に苦労しています。

基礎となる C API は、バリアントの配列を返すことによってタプルを分割できます。次のようになります。

タプルのサイズごとに手動でテンプレートを作成できることを認識しましたが、任意のサイズのタプルを処理できる可変引数ソリューションを探しています。これにアプローチする方法に関するヒントはありますか?

ところで、私が実際にラップしようとしているのは、Erlang NIF API です。

0 投票する
1 に答える
643 参照

objective-c - Objective-C で可変引数メソッドをオーバーライドする方法

次のような可変引数メソッドを持つクラスを拡張しようとしています。

サブクラスでは、次のような元のメソッドを呼び出してオーバーライドします。

しかし、これは機能しません。誰でもこれを操作する方法を知っていますか? ありがとう。

0 投票する
1 に答える
1092 参照

haskell - 可変長構成関数?

可変関数合成関数を書こうとしています。これは基本的に(.)、2 番目の引数関数が可変長であることを除いてです。これにより、次のような式が可能になります。

あるいは単に

IncoherentInstances現在、最初の引数関数に非多態性のインスタンスを追加して必要とする場合、私が到達したものは機能します。

何か案は?それは可能ですか?

0 投票する
1 に答える
261 参照

c++ - オブジェクトの正しいコンストラクターに引数を渡す、可変数の引数をとるテンプレート化された関数を作成する方法は?

次のテンプレート関数があります...

... Lua スクリプト言語で使用する C++ オブジェクトを割り当てて設定します。オブジェクトのコンストラクターに引数を渡せるように、この関数を拡張したいと思います。次のようになります。

...そして、次のように動作します:

次のようになる可変個引数テンプレートを回避します。

いいだろう。

これは c++11 で可能ですか?

更新: 現在、-pedantic をオンにして gcc 4.6 を使用しています。非コンパイラ固有のソリューションが優先されます。

0 投票する
6 に答える
5304 参照

php - (不明な)可変数のパラメーターを使用して関数を呼び出しますか?

関数にパラメータを送信する必要があります

ただし、2つの配列を送信する必要がある場合もあれば、3つ以上の配列を送信する必要がある場合もあります。

0 投票する
1 に答える
1341 参照

c++ - 可変長拡張をコンマ演算子呼び出しのチェーンとして使用できますか?

「可変引数テンプレートで参照を適切に使用する方法」を見ていて、カンマ展開がどこまでできるのか疑問に思いました。

答えの変形は次のとおりです。

可変個引数は要素のコンマ区切りリストに展開されるため、これらのコンマは意味的にテンプレート/関数引数セパレータと同等であるか、語彙的に挿入され、コンマ演算子を含む任意の (ポストプリプロセッサ) 使用に適しています。 ?

これは私の GCC-4.6 で動作します:

しかし、私が試したとき:

「;」を期待して、解析エラーが発生し続けました。「...」の前にあり、その「args」はそのパックを展開しません。うまくいかないのはなぜですか?「args」が空の場合、句読点の無効な塊が得られるためですか? それは合法ですか、私のコンパイラは十分ではありませんか?

(「引数」を括弧で囲んだり、ポストインクリメントを使用したりしましたが、どちらも機能しませんでした。)

0 投票する
2 に答える
513 参照

c++ - 可変引数関数 va_arg() が正しくないパラメーターを返す

問題 部分的に解決: 下部をお読みください

問題の可変個引数関数は、最も単純なものまで取り除かれています。

ご覧のとおり、問題の関数は Variant クラスのオーバーロードされたコンストラクターです。この特定のコンストラクターは、配列を宣言するときにサイズと次元数を受け取ります。

したがって、この行は私の main() で実行されます。

の直後にブレークポイントを設定すると、

関数の行で、次の結果が得られます。

次に、明らかにそれらが完全に無効な値であるため、プログラムはセグメンテーション違反を起こします。

何か案は?前もって感謝します。

問題 部分的に解決: 再起動すると問題は解決しましたが、新しい問題が発生しました ...

後で呼び出される私の OTHER 可変引数関数は、それ自体のパラメーターではなく、 Variant() コンストラクターに渡されたパラメーターをすべてピックアップするようです。何か案は?

と...

前もって感謝します。