問題タブ [most-vexing-parse]

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 投票する
2 に答える
243 参照

c++ - 一時関数オブジェクトの呼び出しにおけるあいまいさの解析

以下のコードでは、コンストラクター引数と関数呼び出し演算子引数の両方を使用した一時関数オブジェクトの呼び出しは、最も厄介な解析の問題のために、どういうわけかあいまいであると思われます。

Ideoneに出力します。

のように括弧を追加すると問題は解決しますが、宣言として解析(Fun(a))(b)する方法がよくわかりません。Fun(a)(b)Fun a

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

c++ - 奇妙な未解決の外部コンパイル DLL

このサイトの指示に従おうとしています: http://support.microsoft.com/kb/q168958

コードは次のとおりです。

これを VS の WIN32 DLL プロジェクトに配置すると、次のエラーが発生します。

TestBuffer の export ステートメントと共にすべてが定義されているため、リンカが定義を見つけられない理由がわかりません。また、この例では、TestBuffer の明示的なインスタンス化をエクスポートする必要さえありません。これは、DLL インターフェイスで公開されていないためです。GetCurrentDir() のみが公開されています。

リンカがコードを見つけられるように TestBuffer 用にコードが生成されていない理由について何か推測はありますか?

PSこれは、実際の製品コードではなく、問題を示すための不自然な例です。

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

c++ - 最も厄介な解析を避けてください

コンパイラーに一時的なものを作成させ、関数を定義せずにそれらにデフォルトのコンストラクターを使用するにはどうすればよいですか?

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

c++ - 最も厄介な解析の目的は何ですか?

ウィキペディアで私はこれを見つけました:

[これ]は、次のいずれかとして明確にすることができます

  1. Aクラス[ ]の変数定義、クラス[ A]または
  1. Aタイプ[]のオブジェクトを返し、タイプ[ ]を返す(入力を受け取らない)関数である単一の(名前のない)引数を取る関数の関数宣言A

ほとんどのプログラマーは最初のものを期待していますが、C++標準では2番目のものとして解釈する必要があります。

しかし、なぜ?C ++コミュニティの大多数が前者の動作を期待している場合は、それを標準にしてみませんか?さらに、構文解析のあいまいさを考慮しない場合、上記の構文は一貫しています。

誰かが私を教えてくれませんか?なぜ規格はこれを要件にしているのですか?

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

c++ - C++ コンストラクタの問題

c++gcc最新バージョン)の奇妙な動作のように思われるものについて、誰かが助けてくれるのではないかと思います。以下は、適切なコンストラクターがないためにコンパイル時エラーが発生すると予想される場合に、正常にコンパイルされるコードです。誰が何が起こっているのか説明できますか?

}

の関数を呼び出そうとするとclass A、コンパイル時エラーが発生します。

結果:

ありがとう!

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

c++ - C++のオブジェクトとオブジェクト()の違いは何ですか?

objインスタンス化との違いは何obj()ですか? obj上記のデフォルトコンストラクタ(1)を呼び出します。どのコンストラクターがobj()呼び出されますか?

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

c++ - この構文の意味は何ですか

次のコードがコンパイルされます。testしかし、それを使用してメソッドを呼び出すコードを記述するとjar、コンパイル エラーが発生します。ここで実際に起こっていること。

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

c++ - 配列要素のアドレスが宣言と間違われることがあるのはなぜですか?

私はいくつかのユーザー定義のイテレータを持っていますが、時々、簡単に回避できる奇妙なエラーが発生しますが、なぜそれが発生するのか理解できません:

typedefs row_iterator と col_iterator が埋め込まれた array_iterator というクラスがあります。row_iterator コンストラクターは、最初の引数として col_iterator を取ります。最初と最後のステートメントは問題なく機能します。中間のステートメントは、次のエラーでコンパイルに失敗します。

&( bytes[0] ) と書いても問題は解決しません ([] は & よりも優先順位が高いため、当然のことです)。もちろん、明示的な col_iterator コンストラクター呼び出しを "a" に置き換えることはできますが、なぜそうしなければならないのでしょうか? また、問題があるとすれば、最後の行の col_iterator コンストラクターがコンパイルされるのはなぜですか?

ありがとう。