問題タブ [c++03]
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++ - C++: クラス/構造体はコンパイル時に初期化されますか?
Foo
コンストラクターを使用してクラスを作成するとしFoo(int)
ます。そして、私はこのコードを持っています:
コード内で定数を使用してコンストラクターを呼び出した場合、たとえばFoo(2)
、コンパイラーはコンストラクターを一度実行して実行時に結果を保存しますか?それとも実行時に実行されますか? 構造体/クラスにPODデータ型のみが含まれているかどうかは同じですか?
実行時に実行されると仮定すると(私はそうなると思います)、コンパイル時に実行する方法、または実行した場合と同じ効果を持つ方法はありますか?
編集:申し訳ありませんが、私は自分自身を明確にしませんでした。Foo(2)
完全に不変であるコードの部分を参照しています。また、私は C++11 を利用できません (私は GCC 4.1 を使用しており、アップグレードできません) constexpr
。
algorithm - 数値に基づいて stl マップをキーのソート済みリストに変換する優れたアルゴリズム
次のタイプの stl マップがあります。
どこ
オブジェクトのリスト (std::list< Object* >) を返したい場合、それを baseObject.ID の順に並べ替える最良の方法は何ですか?
私はすべての数字か何かを調べて立ち往生していますか? マップをブースト マップに変更しないことをお勧めしますが、リターン関数内で自己完結型の処理を実行することに必ずしも反対するわけではありません。
編集: obj->baseobj を反復して baseobj.ID->obj のマップにコピーする必要がありますか?
c++ - c ++ 03の型からの派生を防ぐ方法は?
C ++ 11ではキーワードが導入されfinal
ているため、型から派生することは違法です。
おそらく特定のメンバー関数を作成することによって、C ++ 03で同様の結果を達成する方法はありますprivate
か?
emulation - C ++ 03 auto_ptrで、コンパイラが生成したcopy-ctorが呼び出されないのはなぜですか?
auto_ptr
C++03でどのように機能するかを理解しています。これはこのトリックに基づいています。このトリックは、このようなコードが記述されているときに、ユーザー定義の変換を使用して、あるオブジェクトから別のオブジェクトへのポインターを盗みますauto_int p(auto_int(new int()));
。ただし、この点に関していくつか質問があります。
- コンパイラで生成されたcopy-ctorが呼び出されないのはなぜですか?
- ユーザー定義の変換がコンパイラーで生成されたcopy-ctorよりも優先されるのはなぜですか?
- そもそもコンパイラで生成されたcopy-ctorはありますか?
- そうでない場合、どの言語規則がそれを抑制しますか?
c++ - How do I get the member function pointer of a destructor?
Assume I have
What's the type of and how do I get the member function pointer of X::~X()
in C++03?
I don't want to actually call it, just use in SFINAE to figure if there exists a destructor for a given type.
c++ - デフォルトのコンストラクターのマクロは可能ですが、コンパイラーのサポートは保留中ですか?
しかし、私のコンパイラにはデフォルトのコンストラクタがまだありません。
の代わりになるようなマクロを定義できますDEFAULTED
か= default
? 行をそのままにした場合
コンパイラはまだデフォルトを生成しますか、それとも文句を言いますか?
c++ - 頻繁に作成および削除されるゲーム オブジェクトには、どのコンテナーを使用すればよいですか?
オブジェクトを作成して頻繁に殺すゲームをやっています。次のオブジェクトが常に前のオブジェクトよりも新しくなるように、オブジェクトのリストを線形にループできる必要があるため、オブジェクトのレンダリングは正しくなります (オーバーラップします)。また、近くのオブジェクトをすばやく見つけるために、各オブジェクトのポインターを四分木に格納できる必要もあります。
私の最初の考えは を使用するstd::list
ことでしたが、これまでにこのようなことをしたことがないので、これについての専門家の考えを探しています.
どの容器を使用すればよいですか?
編集:私は前から削除しているだけではありません:オブジェクトは任意の順序で削除できますが、常にリストの最後に追加されるため、最後の項目が最新です。
c++ - ユニオンがその要素にユーザー定義のコンストラクターを持つことを許可しないのはなぜですか?
最初の構造体にコンストラクターがある場合、この 2 番目の構造体を機能させるにはどうすればよいですか? エラーが発生します:
コード:
関数を使用して xyz 構造体を初期化することもできますが、それはかなり遅くなりませんか? 言うまでもなく、init_xyz() などのプレフィックスを使用して独自の関数を作成する必要がある構造体がたくさんありますが、これは良くありません。この問題を回避する他の方法はありますか?
c++ - C++ ライブラリで動的に関数の使用をブロックする
.libと.dllの両方として作成されたライブラリがあります(Windows プラットフォーム用に完全に C++ で記述された大きなライブラリです)。ユーザーは、自分のプログラムやライブラリ、または使用したいものでライブラリを使用できます。
しかし、一部の機能を一部のユーザーに制限したいと考えています。
たとえば、
- 私たちのライブラリには、 と の 3 つの関数
foo()
がbar()
ありhoo()
ます。 - ユーザーA
foo()
は、bar()
およびの機能に対して料金を支払いhoo()
ます。 - ユーザーB
bar()
は機能との料金を支払いhoo()
ます。
したがって、Bにライブラリ ファイル (headers/libs/dlls など) を渡すと、
- ライブラリのコピーを作成し、foo() 関数とそれに関連するものを削除して、Bに送信できます。
または、ライブラリ全体を彼に送信して、彼が
foo()
.- 1 番目の方法は、作業が膨大で、依存関係に注意する必要があるため、良くありません。
bar()
とhoo()
が に依存していないことが確実にわかっていても、foo()
何かを削除して、より多くのテストを含む lib のカスタマイズされたバージョンを提供するのは頭痛の種です。そして、メンテナンスはさらに問題になります。また、SVN もカオスになります。 - 2番目の方法は、私が推測する最良の方法です。しかし、それを行う方法は?
- 1 番目の方法は、作業が膨大で、依存関係に注意する必要があるため、良くありません。
そして、Bfoo()
が後で関数の料金を支払ったらどうなるでしょうか? それなら私は彼にそれを使わせなければならないでしょう。
これで問題が理解できたと思います。2 つの方法は単なる私の意見であり、それらに関する私の結論も間違っている可能性があります。そこで、この件についてアイデアや提案があるかどうか尋ねています。
c++ - C++ および C での共用体の初期化
次のように定義されたヘッダーファイルで、定数を使用する作業用の C ライブラリを構築しました。
.raw
初期化子が C のみの構文であることはわかっています。
C および C++ で使用できるように、共用体を含む定数を定義するにはどうすればよいですか。