問題タブ [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.

0 投票する
1 に答える
1361 参照

c++ - C ++ 98でマトリックスを初期化する正しい方法は何ですか?

  1. 私はプログラマーではありません
  2. Win32でInkscapeをコンパイルしたいのですが、次のエラーメッセージが表示されました。

ui / dialog / filedialogimpl-win32.cpp:1379:エラー:C ++ 98では、「行列」は「{...}」ではなくコンストラクターで初期化する必要があります
make [1]:*** [ui / dialog / filedialogimpl-win32.o]エラー1

疑わしいコードfiledialogimpl-win32.cpp

では、C++98標準でどのように記述されているのでしょうか。

私はそれをグーグルで調べましたが、誰もそのように遭遇しませんでした、それは無関係である可能性がありますか?

0 投票する
3 に答える
1870 参照

c++ - ansi および pedantic フラグを使用しても、GCC が C++ で round() の使用を許可するのはなぜですか?

-ansiこのプログラムがフラグとフラグを使用しても GCC でコンパイルされる正当な理由はあり-pedanticますか?

これにより、g++ -ansi -pedantic -Wall test.cpp -o test.

2 つの問題があります。

  1. round()ISO 準拠モードの C++ では使用できないはずです (C99 に由来するため)。
  2. この場合に利用可能であったとしても、名前空間round()からのみ利用可能であるべきですstd

私が間違っている?

0 投票する
9 に答える
1088 参照

c++ - ANSI C++ コードを記述するためのリソース

私が最後に C++ を多用したのは何年も前のことで、厳密には Windows プラットフォーム上で行われていました。具体的には、Microsoft Visual Studio を IDE として使用し、Microsoft の C++ バージョンを使用するいくつかの習慣的なパターンを開発しました。たとえば、標準のint main( ) の代わりにvoid main()を使用しました。

現在、ANSI C++ 準拠のプログラムを開発する必要があり、コードは g++ を使用してコンパイルされるクラスを受講しています。システム ( "PAUSE" )は g++ では機能せず、おそらく Microsoft のものであることをすぐに知りました。

ANSI C++ に準拠するためにさらに何を学ぶことができる良いリソース (サイト、チュートリアル、本) を知っている人はいますか?

ありがとうございました。

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

c++ - 「ANSIC++」とは何ですか?

C ++ 98は、ISO / IEC 14882:1998として正式に標準化される前に、ANSIの下で作成されたと誰かに言われました。

ANSIがCに関与していることは知っていますが、「ANSIC++」というフレーズが非常に正確であることを証明する方法についてはあまりわかりません。

  • 「ANSIC++」はC++98の良い説明ですか?
  • 「ANSIC++」は、C ++標準の後続のバージョンの適切な説明ですか?
0 投票する
2 に答える
1508 参照

c++ - c++98の固定配列のベクトル

不確定な数の三角形をベクトルに格納する必要があるため、次のようになります。

しかし、それは有効なC++98ではありません。三角形の構造体を含まない他のソリューションは何ですか?

ありがとう

0 投票する
2 に答える
1245 参照

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では、タイプ特性を使用すると便利になると思います。これは正しいですか?

ありがとう!

編集:これに遅れて申し訳ありませんが、これはTypeGCCとllvmにとって簡単ではない非常に単純なクラスの例です。何か案は?

0 投票する
1 に答える
348 参照

c++ - std::tr1::function - さまざまな型の関数オブジェクトを共通のコンテナーに格納する

ファンクターの実装を次のように変換していますstd::tr1::function(私の実装では、関数の型ごとに型とファンクター クラスを事前定義する必要があるため、これを拡張して任意の関数で動作するようにしたいためです)。

私は持っている

これを共通のコンテナに追加したい

では、コンテナを宣言する方法、任意の型の関数を受け入れるにはどの型でなければなりませんか? それはまったく可能ですか?

2 番目の質問 - 次のように、コンテナ内で関数を呼び出す方法:

PS別の解決策があるかもしれませんが、このトピックでは十分に認識していません。答えてくれてありがとう。

GNU C++98 を扱っています。

0 投票する
3 に答える
607 参照

c++ - std :: vector <>は、プリミティブを初期化せず、construct_backを転送しないresize()で派生します

そのため、パフォーマンスに敏感なアプリケーションでこれが必要になるケースがたくさんあり、私はついにラクダを壊した藁にいます。プラットフォームの少なくとも1つはC++98準拠のみを保証するため、C++98でコンパイルする必要があります。

うまくいけば、私が欲しいものをもう少し明確にするために編集しました。

例:

これは一般的なCインターフェイスであり、バッファにデータを書き込むためにほぼすべてのCライブラリで使用されます。一般にプリミティブを含むバッファを扱う場合にも同じ問題が発生します。新しいサイズ変更は、代わりに次のようになります。

construct_backは転送コンストラクターになり、1つのconst引数の場合、次のようになります(テストされていません):

construct_backには、可能なすべての数の引数^ 2オーバーロードが必要です。これは、C++98で完全に転送するための一般的なブルートフォースアプローチです。

0 投票する
1 に答える
3231 参照

c++ - c++11でstd::listが大きくなるのはなぜですか?

このコードで:

std::list<void*>GCC 4.7では、C ++ 98でのサイズは16バイトであり、C++11でのサイズは24バイトであることに気づきました。

std :: listで何が変わったのか、それが大きくなったのだろうかと思っていました。

0 投票する
2 に答える
6698 参照

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