タグ付けされた質問 「deleted-functions」

3
「= default」はデフォルトのコンストラクタとデストラクタの「{}」とどう違うのですか?
もともとはデストラクタについての質問としてこれを投稿しましたが、今はデフォルトのコンストラクタの考慮を追加しています。元の質問は次のとおりです。 クラスに仮想のデストラクタを与えたいが、それ以外はコンパイラが生成するものと同じである場合は、次のように使用できます=default。 class Widget { public: virtual ~Widget() = default; }; しかし、空の定義を使用して入力を減らすことで同じ効果を得ることができるようです: class Widget { public: virtual ~Widget() {} }; これらの2つの定義が異なる動作をする方法はありますか? この質問に投稿された回答に基づくと、デフォルトのコンストラクタの状況は似ているようです。デストラクタの「=default」と「{}」の意味にほとんど違いがないことを考えると、デフォルトのコンストラクタのこれらのオプションの意味にも同様にほとんど違いはありませんか?つまり、そのタイプのオブジェクトが作成されて破壊されるタイプを作成したいと仮定すると、なぜ私は言いたいのですか? Widget() = default; の代わりに Widget() {} ? 元の投稿後にこの質問を拡張すると、SOのルールに違反することになります。デフォルトのコンストラクタについてほぼ同じ質問を投稿することは、あまり望ましくない選択肢であると私を思いました。

6
エラー:削除された関数の使用
私は友人が書いたいくつかのC ++コードに取り組んでいて、gcc4.6でコンパイルしたときにこれまでに見たことのない次のエラーが発生します。 error: use of deleted function ‘GameFSM_<std::array<C, 2ul> >::hdealt::hdealt()’ is implicitly deleted because the default definition would be ill-formed: uninitialized non-static const member ‘const h_t FlopPokerGameFSM_<std::array<C, 2ul> >::hdealt::h’ 編集:これは、boost MSM:Boost Webpageを使用するコードの一部から来ています Edit2:ソースコードの= delete()どこにも使用されていません。 一般的に、このエラーはどういう意味ですか?このタイプのエラーが発生した場合、何を探す必要がありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.