問題タブ [c++98]
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++ 98 標準は、ローカルで宣言されたテンプレート名が依存しないことをどこで指定していますか?
このページによると: http://womble.decadent.org.uk/c++/template-faq.html#non-dependent "非依存名は、テンプレート パラメーターに依存しないと見なされる名前と、名前テンプレート自体とその中で宣言された名前 (メンバー、フレンド、およびローカル変数) の
これは、次のコードが有効であると見なされているという事実によって裏付けられているようです (LLVM/Comeau による)。
C++ 98 標準をしばらく読んだ後、この動作が指定されている場所を見つけることができません。これについては、「temp.nondep」の下で言及されると思います。
c++ - gccでのC++98標準の適用
C++98準拠のコードで書く必要のある学校の課題があります。g++
この標準に準拠したコードのみを強制的に受け入れるにはどうすればよいですか?トリックを実行します-std=c++98
か、それともフラグを追加する必要がありますか?
c++ - C++ 変数の型を完全修飾する必要がありますか?
最大 80 列未満に収まるコード行を記述しようとしています。したがって、変数の型を完全に修飾することは本当に必須なのだろうか? 次の実装を想定しています。
関数パラメーターの型を宣言するには、複数の方法がありますか?
- a)
int f(Baz* b);
- b) または
int f(attributes::Baz* b);
- c) または
int f(loggingapi::attributes::Baz* b);
- d) または
int f(::loggingapi::attributes::Baz* b);
上記のリストで、どの定義がコンパイラにとってより明確/曖昧ですか?
注: 次の実装では、名前空間/パラメーター/クラス/関数名を短縮できないと想定する必要があります。
boost - Google Test と boost::variant
単体テスト内で boost::variant の型を繰り返し処理したいと考えています。これは次のように行うことができます。
function はファンクターです。特定の操作が、バリアント内の 1 つのタイプに対して他のすべてのタイプとは異なる方法で行われるようにしたいだけです。しかし、テストが別の関数で行われるようになったのは好きではありません。また、ファンクターから MyTest のメンバーにアクセスしたい場合はどうすればよいでしょうか? それは本当に厄介なようです。
より良いアプローチに関する提案はありますか?
c++ - Google テストのブースト::バリアント
コマンドを含む boost::variant があります。コマンドに対して 1 つの方法で動作し、他のすべてのコマンドに対して 1PathValidator
つの方法で動作するビジターを作成しています。Create
これが私がテストしている方法です。テストを追加するにつれて、さらに HelperVisitors を作成する必要があります。これをより読みやすく、冗長にする方法についてのヒントはありますか? C++98 を使用しています。あるいは、これでいいと思うかもしれません。
c++ - std::vectorの内容をテストするためのOneliner
これを行うためのより便利な方法は何ですか:
上記の問題の1つは、テスト駆動開発を行うときにテストケースがクラッシュすることです。この場合、テスト対象の実際のコードが書き込まれる前に、mock->paramsのサイズが最初にゼロになります。
ところで、使用できない特定のコンパイラフラグが必要なため、GoogleMockの使用は許可されていません。stdとboostを使用できます。
c++ - const char** 型の out パラメーターを持つ関数をモックします。
基本的に一連の関数ポインターを含む構造体である ac api「クラス」をモックする必要があります。これが私のアプローチです。あなたの意見では有効ですか、それともより良いアプローチを提案できますか?
アップデート
私が念頭に置いている別のアプローチは、の代わりにstd::vector
とを使用することです。イテレータは、ベクター内の値を「使用」するたびにインクリメントされます。std::vector::iterator
std::queue
c++ - boost::assign::list_of の使用
これはコンパイルされます:
しかし、これではありません:
コンストラクターに渡されたベクトルを初期化するためのワンライナー ソリューションはありますか?
さらに良いことに、代わりに参照を取得してコンストラクターがクラス変数にコピーする場合は、次のようになります。
アップデート
次のことを試してみると:
コンパイラ エラーが発生します。
c++ - 構造体のstd::vectorを初期化しています
このタイプのオブジェクトの束をstd::vectorに追加したいと思います。
ハンドルは、変更できないCAPIヘッダー内で定義されています。
私は現在これを行っていますが、ワンライナーとして行うことができるかどうか疑問に思っています。
私はC++98コンパイラを使用しています。
c++ - pointing to an object in a std::vector of bool
Possible Duplicate:
Why vector<bool>::reference doesn’t return reference to bool?
I have a mock class which I am using in my unit tests.
I looks something like:
So the vector is filled with values and the iterator is incremented each time a value is used by the test.
The problem is that the code wont compile and I'm guessing its because std::vector is saved as bits and I can point to a member in it with a bool*.
How might I solve this?