問題タブ [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でマトリックスを初期化する正しい方法は何ですか?
- 私はプログラマーではありません
- Win32でInkscapeをコンパイルしたいのですが、次のエラーメッセージが表示されました。
ui / dialog / filedialogimpl-win32.cpp:1379:エラー:C ++ 98では、「行列」は「{...}」ではなくコンストラクターで初期化する必要があります
make [1]:*** [ui / dialog / filedialogimpl-win32.o]エラー1
疑わしいコードfiledialogimpl-win32.cpp
:
では、C++98標準でどのように記述されているのでしょうか。
私はそれをグーグルで調べましたが、誰もそのように遭遇しませんでした、それは無関係である可能性がありますか?
c++ - ansi および pedantic フラグを使用しても、GCC が C++ で round() の使用を許可するのはなぜですか?
-ansi
このプログラムがフラグとフラグを使用しても GCC でコンパイルされる正当な理由はあり-pedantic
ますか?
これにより、g++ -ansi -pedantic -Wall test.cpp -o test
.
2 つの問題があります。
round()
ISO 準拠モードの C++ では使用できないはずです (C99 に由来するため)。- この場合に利用可能であったとしても、名前空間
round()
からのみ利用可能であるべきですstd
私が間違っている?
c++ - ANSI C++ コードを記述するためのリソース
私が最後に C++ を多用したのは何年も前のことで、厳密には Windows プラットフォーム上で行われていました。具体的には、Microsoft Visual Studio を IDE として使用し、Microsoft の C++ バージョンを使用するいくつかの習慣的なパターンを開発しました。たとえば、標準のint main( ) の代わりにvoid main()を使用しました。
現在、ANSI C++ 準拠のプログラムを開発する必要があり、コードは g++ を使用してコンパイルされるクラスを受講しています。システム ( "PAUSE" )は g++ では機能せず、おそらく Microsoft のものであることをすぐに知りました。
ANSI C++ に準拠するためにさらに何を学ぶことができる良いリソース (サイト、チュートリアル、本) を知っている人はいますか?
ありがとうございました。
c++ - 「ANSIC++」とは何ですか?
C ++ 98は、ISO / IEC 14882:1998として正式に標準化される前に、ANSIの下で作成されたと誰かに言われました。
ANSIがCに関与していることは知っていますが、「ANSIC++」というフレーズが非常に正確であることを証明する方法についてはあまりわかりません。
- 「ANSIC++」はC++98の良い説明ですか?
- 「ANSIC++」は、C ++標準の後続のバージョンの適切な説明ですか?
c++ - c++98の固定配列のベクトル
不確定な数の三角形をベクトルに格納する必要があるため、次のようになります。
しかし、それは有効なC++98ではありません。三角形の構造体を含まない他のソリューションは何ですか?
ありがとう
c++ - std :: copy / memcpy/memmoveの最適化
GCC STL(4.6.1)を調べたところ、ビルトインがに評価されstd::copy()
た場合に最適化されたバージョンを使用していることがわかりました。__is_trivial()
true
std::copy()
とテンプレートは配列内の要素をコピーするのに非常に便利なので、std::reverse_copy()
それらを使用したいと思います。ただし、いくつかの些細な値を含み、ポインターを含まず、コピーコンストラクターまたは代入演算子を持たない構造体であるいくつかのタイプ(テンプレートのインスタンス化の結果)があります。
G ++は、私のタイプが実際には些細なものであることを理解するのに十分賢いですか?C ++ 98で、STL実装が私の型が取るに足らないことを認識していることを確認する方法はありますか?
is_trivial<>
C ++ 11では、タイプ特性を使用すると便利になると思います。これは正しいですか?
ありがとう!
編集:これに遅れて申し訳ありませんが、これはType
GCCとllvmにとって簡単ではない非常に単純なクラスの例です。何か案は?
c++ - std::tr1::function - さまざまな型の関数オブジェクトを共通のコンテナーに格納する
ファンクターの実装を次のように変換していますstd::tr1::function
(私の実装では、関数の型ごとに型とファンクター クラスを事前定義する必要があるため、これを拡張して任意の関数で動作するようにしたいためです)。
私は持っている
これを共通のコンテナに追加したい
では、コンテナを宣言する方法、任意の型の関数を受け入れるにはどの型でなければなりませんか? それはまったく可能ですか?
2 番目の質問 - 次のように、コンテナ内で関数を呼び出す方法:
PS別の解決策があるかもしれませんが、このトピックでは十分に認識していません。答えてくれてありがとう。
GNU C++98 を扱っています。
c++ - std :: vector <>は、プリミティブを初期化せず、construct_backを転送しないresize()で派生します
そのため、パフォーマンスに敏感なアプリケーションでこれが必要になるケースがたくさんあり、私はついにラクダを壊した藁にいます。プラットフォームの少なくとも1つはC++98準拠のみを保証するため、C++98でコンパイルする必要があります。
うまくいけば、私が欲しいものをもう少し明確にするために編集しました。
例:
これは一般的なCインターフェイスであり、バッファにデータを書き込むためにほぼすべてのCライブラリで使用されます。一般にプリミティブを含むバッファを扱う場合にも同じ問題が発生します。新しいサイズ変更は、代わりに次のようになります。
construct_backは転送コンストラクターになり、1つのconst引数の場合、次のようになります(テストされていません):
construct_backには、可能なすべての数の引数^ 2オーバーロードが必要です。これは、C++98で完全に転送するための一般的なブルートフォースアプローチです。
c++ - c++11でstd::listが大きくなるのはなぜですか?
このコードで:
std::list<void*>
GCC 4.7では、C ++ 98でのサイズは16バイトであり、C++11でのサイズは24バイトであることに気づきました。
std :: listで何が変わったのか、それが大きくなったのだろうかと思っていました。
c++ - C++98およびC++11の列挙値にアクセスします
「Foo」クラス(下記)で定義された列挙値のセットがあります。
構造体を使用して、Baz列挙値の範囲を縮小し、関連する値のグループがあることを示しています。
私の目的は、列挙型から変数に値を割り当てることです。上記のクラス定義を使用して、これを行うことができます。
しかし、私はそれを感じます:
- 一見すると、myValueはFii :: Foo :: Barとして初期化されているように見えますが、これは、列挙型が親(この場合はBar )の関連する定数をグループ化するためのハックであるためです。
準備を改善するために、IIはコードを次のようにリファクタリングしました。
この新しいクラス定義を使用して、これを行うことができます。
Q1)Fii :: Foo :: Bar :: Baz myValue = Fii :: Foo :: Baz::BAZ1がC++11でのみ機能するのはなぜですか?
Q2)C ++ 98では、Fii :: Foo :: Baz myValue = Fii :: Foo :: Baz :: BAZ1と書く方法はありますか?クラス定義で好きな変更を加えることができます。
環境:-C++11をサポートするClangコンパイラ-Xcode4-MacOS OS 10.8