問題タブ [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.
c++ - 一時関数オブジェクトの呼び出しにおけるあいまいさの解析
以下のコードでは、コンストラクター引数と関数呼び出し演算子引数の両方を使用した一時関数オブジェクトの呼び出しは、最も厄介な解析の問題のために、どういうわけかあいまいであると思われます。
Ideoneに出力します。
のように括弧を追加すると問題は解決しますが、宣言として解析(Fun(a))(b)
する方法がよくわかりません。Fun(a)(b)
Fun a
c++ - 奇妙な未解決の外部コンパイル DLL
このサイトの指示に従おうとしています: http://support.microsoft.com/kb/q168958
コードは次のとおりです。
これを VS の WIN32 DLL プロジェクトに配置すると、次のエラーが発生します。
TestBuffer の export ステートメントと共にすべてが定義されているため、リンカが定義を見つけられない理由がわかりません。また、この例では、TestBuffer の明示的なインスタンス化をエクスポートする必要さえありません。これは、DLL インターフェイスで公開されていないためです。GetCurrentDir() のみが公開されています。
リンカがコードを見つけられるように TestBuffer 用にコードが生成されていない理由について何か推測はありますか?
PSこれは、実際の製品コードではなく、問題を示すための不自然な例です。
c++ - 最も厄介な解析を避けてください
コンパイラーに一時的なものを作成させ、関数を定義せずにそれらにデフォルトのコンストラクターを使用するにはどうすればよいですか?
c++ - 最も厄介な解析の目的は何ですか?
ウィキペディアで私はこれを見つけました:
[これ]は、次のいずれかとして明確にすることができます
A
クラス[ ]の変数定義、クラス[A
]または
A
タイプ[]のオブジェクトを返し、タイプ[ ]を返す(入力を受け取らない)関数である単一の(名前のない)引数を取る関数の関数宣言A
。
ほとんどのプログラマーは最初のものを期待していますが、C++標準では2番目のものとして解釈する必要があります。
しかし、なぜ?C ++コミュニティの大多数が前者の動作を期待している場合は、それを標準にしてみませんか?さらに、構文解析のあいまいさを考慮しない場合、上記の構文は一貫しています。
誰かが私を教えてくれませんか?なぜ規格はこれを要件にしているのですか?
c++ - C++ コンストラクタの問題
c++
(gcc
最新バージョン)の奇妙な動作のように思われるものについて、誰かが助けてくれるのではないかと思います。以下は、適切なコンストラクターがないためにコンパイル時エラーが発生すると予想される場合に、正常にコンパイルされるコードです。誰が何が起こっているのか説明できますか?
}
の関数を呼び出そうとするとclass A
、コンパイル時エラーが発生します。
結果:
ありがとう!
c++ - C++のオブジェクトとオブジェクト()の違いは何ですか?
obj
インスタンス化との違いは何obj()
ですか? obj
上記のデフォルトコンストラクタ(1)を呼び出します。どのコンストラクターがobj()
呼び出されますか?
c++ - この構文の意味は何ですか
次のコードがコンパイルされます。test
しかし、それを使用してメソッドを呼び出すコードを記述するとjar
、コンパイル エラーが発生します。ここで実際に起こっていること。
c++ - 配列要素のアドレスが宣言と間違われることがあるのはなぜですか?
私はいくつかのユーザー定義のイテレータを持っていますが、時々、簡単に回避できる奇妙なエラーが発生しますが、なぜそれが発生するのか理解できません:
typedefs row_iterator と col_iterator が埋め込まれた array_iterator というクラスがあります。row_iterator コンストラクターは、最初の引数として col_iterator を取ります。最初と最後のステートメントは問題なく機能します。中間のステートメントは、次のエラーでコンパイルに失敗します。
&( bytes[0] ) と書いても問題は解決しません ([] は & よりも優先順位が高いため、当然のことです)。もちろん、明示的な col_iterator コンストラクター呼び出しを "a" に置き換えることはできますが、なぜそうしなければならないのでしょうか? また、問題があるとすれば、最後の行の col_iterator コンストラクターがコンパイルされるのはなぜですか?
ありがとう。