問題タブ [c++]

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

c++ - 移植可能な方法で配列の新しい配置を使用できますか?

配列に使用する場合、移植可能なコードで新しい配置を実際に利用することは可能ですか?

new[] から返されるポインタは、渡したアドレスと必ずしも同じではないようです (5.3.4、標準の注記 12 は、これが正しいことを確認しているようです)。この場合、配列が入るバッファを割り当てることができます。

次の例は、問題を示しています。この例を Visual Studio でコンパイルすると、メモリが破損します。

メモリーを見ると、コンパイラーはバッファーの最初の 4 バイトを使用して、項目数のカウントを格納しているようです。これは、バッファーがsizeof(A)*NUMELEMENTS大きいだけであるため、配列の最後の要素が未割り当てヒープに書き込まれることを意味します。

質問は、placement new[] を安全に使用するために、実装が必要とする追加のオーバーヘッドをどれだけ見つけられるかということです。理想的には、異なるコンパイラ間で移植可能な手法が必要です。少なくとも VC の場合、オーバーヘッドはクラスによって異なるように見えることに注意してください。たとえば、例で仮想デストラクタを削除すると、new[] から返されるアドレスは、渡したアドレスと同じになります。

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

c++ - 親ウィンドウを作成する DLL プラグインがメッセージを正しく処理しない

アプリケーションが一連のプラグイン DLL をロードし、新しいウィンドウを作成して、この新しいウィンドウのハンドルをプラグインに渡すプラグイン フレームワークを作成しています。プラグインは、このハンドルを使用して独自の GUI を作成できます。

すべてが非常にうまく機能しているようです。唯一の問題は、プラグイン ウィジェット (たとえば、編集ボックス) で TAB を押しても、別のウィジェットにジャンプしないことです。Windows メッセージには渡されるものと渡されないものがあることがわかりました。エディットボックスで入力できるため、WM_KEYDOWN は他のキーに渡されますが、このメッセージは TAB キーを処理しません。

誰かがヒントを持っていることを願っています。

私は CBuilder で Borland VCL を使用していますが、親ウィンドウがどのように作成されたかがわからないため、WIN32 の下の任意のフレームワークを使用してこれらのプラグインを作成できると思います。

0 投票する
13 に答える
11132 参照

c++ - VisualStudioを使用してUnix用のC++用に開発する

Visual Studioを使用してUnix用のアプリケーションを開発しようとして共有するバトルストーリーはありますか?そして、その下で実行されているMonoまたはWine仮想プラットフォームで.NETを使用することについて話しているのではありません。

当社には約20人の開発者がおり、全員がWindows XP / Vistaを実行しており、主にLinuxとSolaris向けに開発しています。最近まで、私たちはすべてメインのLinuxサーバーにログインし、古き良き方法でコードを変更/構築しました:Emacs、Vi、dtpad-選択してください。それから誰かが「ねえ、私たちは暗黒時代に住んでいるので、IDEを使うべきだ」と言いました。

そこで、いくつか試してみて、パフォーマンスのニーズを満たすのはVisual Studioだけであると判断しました(はい、IDE Xは非常に優れたIDEであると確信していますが、VSを選択しました)。

問題は、ファイルをVSでローカルに使用できるだけでなく、ビルドサーバーでも使用できるように環境をどのように設定するかです。Visual Studioプラグインを作成することにしました。[保存]をクリックするたびにファイルがローカルにビルドサーバーに書き込まれ、サーバー側でファイルが変更されたときに押すことができる少し太い[同期]ボタンがあります(ソース管理サーバーから最新のファイルに更新します)。

プラグインは、Visual Studioの外部ビルドシステム機能も使用します。この機能は、最終的にビルドサーバーにSSHで接続し、ローカルの「make」ユーティリティ(Boost Build v2)を呼び出します。依存関係のチェックは優れていますが結果として起動が非常に遅くなります。開始するのに60秒)。結果はVisualStudioにパイプで戻されるため、開発者はエラーをクリックして適切なコード行に移動できます(実際にはかなり滑らかです)。ビルドサーバーはGCCを使用し、すべてのSolarisビルドをクロスコンパイルします。

しかし、これをすべて行った後でも、VisualStudioでコードを書き始めるたびにため息をつくしかありません。ファイルをクリックして入力を開始すると、VSが追いつきます。

ツールを停止して待つことよりも厄介なことはありますか?メリットは欲求不満の価値がありますか?

考え、物語、助け?

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

c++ - C++の優れたリファクタリングサポート

Visual StudioのC#リファクタリングのサポートは、最近では非常に優れています(ただし、これまでに見たJava IDEの半分ではありません)が、C++のサポートが本当に不足しています。

リファクタリングを見たことがあります!現在試してみていますが、もっと良いツールやプラグインを知っている人がいるかもしれません。


私は現在VisualAssistXを1〜2週間使用していて、完全に中毒になっています。ヒントをありがとう、私も仕事で私に免許を取得するように上司を説得しようとします。
Visual AssistXがいくつかの特定のリファクタリングの後にVisualStudioを台無しにして以来、私は数日間バグハンティングを続けてきました。私(およびカスタマーサポート)が追い詰めるのに1週間かかりましたが、今のところVisualAssistXはClipXとの良い組み合わせ。

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

c++ - VS2005 用の C++ std::tr2

Boost は VS2005 ユーザーが TR2 を経験する唯一の方法ですか? また、TR2 関連のパッケージのみをダウンロードするばかげた証明方法はありますか?

BoostPro Consulting が提供するブースト インストーラーを見ていました。MSVC8 のすべてのパッケージですべてのスレッド オプションのオプションを選択すると、1.1GB が必要になります。私はスペースが不足しているわけではありませんが、ライブラリがギガバイトを超えるスペースを必要とし、BPC が現在のリリースに追いつくのに長い時間がかかるというのはばかげているように思えます。

どのパッケージが必要ですか? 私は本当に std::tr2 を構成するものにのみ興味があり、提供されているものと TR2 レポートのものを比較し、リストからそれらを選択することでそれを見つけることができますが、それでも何が必要で、それが後ろのバージョンであるという事実は私を悩ませます。

Boost (1.33.1) との以前の出会いから、自己コンパイルは惨めな経験であることを知っています: 開始するのに多くの時間が浪費され、その後、大量のエラーが、読むよりも速く画面を横切ります。 with は、何かが壊れているという不安な気持ちですが、何が原因かはよくわかりません。

私はApacheライブラリでこれらの問題を経験したことはありませんが、それは別の暴言です...

0 投票する
5 に答える
1481 参照

c++ - テスト ケース VS ASSERTION ステートメント

私のほとんどの C++ プロジェクトでは、次のように ASSERTION ステートメントを多用しました。

しかし、TDD コミュニティは次のようなことを楽しんでいるようです。

私の経験では、最初のアプローチで非常に多くの微妙なバグを取り除くことができました。しかし、TDD アプローチは、レガシー コードを処理するための非常に賢明なアイデアです。

「Google」 - 彼らは「FIRST METHOD」を「救命胴衣を着て海岸を歩き、安全ガードなしで海を泳ぐ」と比較します。

どちらの方がよいですか?ソフトウェアを堅牢にするのはどれですか?

0 投票する
24 に答える
66891 参照

c++ - Linux で C++ アプリケーションを開発するためにどのツールを使用していますか?

Linux 環境で C++ アプリケーションを開発しています。私が毎日使用するツールには、Eclipse と CDT プラグイン、gdb、および valgrind が含まれます。
他の人はどのようなツールを使用していますか? Microsoft Visual Studio の滑らかさに匹敵する Linux 用の製品はありますか?

0 投票する
5 に答える
3597 参照

c++ - double ポインターの配列を、それらが指す値に基づいて並べ替えるにはどうすればよいですか?

配列をソートし、各値をその「スコア」またはランクに置き換える関数を C/C++ で作成しようとしています。これは、int の配列への double ポインター配列を受け取り、逆参照された整数の値に基づいて double ポインターをソートします。私はそれを機能させるためにかなりの回数を試みましたが、それを落とすことはできません。繰り返しになりますが、double ポインターは、それらが指す値に基づいてソートする必要があります。これは私が持っているものです:

0 投票する
33 に答える
544276 参照

c++ - float と double の比較で最も効果的な方法は何ですか?

double2 つまたは 2 つのfloat値を比較する最も効率的な方法は何ですか?

単純にこれを行うのは正しくありません:

しかし、次のようなもの:

無駄な処理をしているようです。

よりスマートなフロート比較器を知っている人はいますか?

0 投票する
30 に答える
177529 参照

c++ - C++ で「フレンド」を使用する必要があるのはいつですか?

私はC++ FAQを読んでいて、friend宣言に興味がありました。個人的には使ったことはありませんが、言語を探求することに興味があります。

を使用する良い例は何friendですか?


FAQ をもう少し読んでみると、<< >>オペレーターがオーバーロードし、それらのクラスのフレンドとして追加するというアイデアが気に入っています。ただし、これがカプセル化を壊さない方法はわかりません。これらの例外が OOP の厳格さの範囲内にとどまることができるのはいつですか?