問題タブ [nullptr]

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 投票する
4 に答える
8360 参照

c++ - タイプ`std:: nullptr_t`の用途は何ですか?

nullptr私は、任意のポインター型に変換可能であることに加えて(ただし、整数型には変換できない)、独自の型も持っていることを学びましたstd::nullptr_t。したがって、を受け入れるメソッドのオーバーロードを持つことが可能std::nullptr_tです。

なぜそのような過負荷が必要なのですか?

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

c++ - c++ GDI ビットマップをロードしたくない

私の名前はミゲルです。1 つの .bmp で各ピクセルを取得しようとしていますが、これまでのところ、ビットマップを初期化すると値が取得されないため、初期化が間違っていると思います。これは私の現在のコードです:(スニペット)

さて、私のコードを見て、私が間違っていることを予測してもらえますか?

ありがとうございました

ミゲル・ピーターセン

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

c++ - &* 生ポインタ、イテレータ、および ... std::nullptr_t

(std::enable_if を介して) 有効になっているテンプレート関数があります。そのパラメーターは生のポインターであるか、std::iterator カテゴリを持っているか、std::nullptr_t です。その関数では、次のように、生のポインター (データ メンバー) がパラメーターと等しく設定されます。

&* はポインターとイテレーターではうまく機能しますが、std::nullptr_t では失敗します。2つの異なる関数を書くことを避けるために利用できる解決策はありますか?

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

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

c++ - ここで、三項演算子が if-else と同じでないのはなぜですか?

TR1 を使用しstd::functionて単純なコールバック メカニズムを実装しています。コールバックされたくない場合はnullptr、コールバック ハンドラとして登録します。これはコンパイルされ、正常に動作します:

これを三項演算子で書き直すと・・・

... VC++ のコンパイラは次のように述べています。

エラー C2446: ':': 'nullptr' から 'std::tr1::_Bind<_Result_type,_Ret,_BindN>' 1> への変換がありません 1>
[ 1> _Result_type=void, 1> _Ret=void, 1>
_BindN=std::tr1::_Bind2,Foo *,std::tr1::_Ph<1>> 1> ] 1> ソース型を取得できるコンストラクターがないか、コンストラクターのオーバーロード解決があいまいです

これはコンパイラの制限ですか、それとも私は愚かなことをしていますか? この特定のケースでは、三項演算子を使用しても何のメリットも得られないことはわかっていますが、ただ興味があります。

0 投票する
4 に答える
8656 参照

c++ - nullptr を int に変換できないのはなぜですか?

要約:nullptrに変換しbool、 にbool変換するのにint、なぜ にnullptr変換しないのintですか?

このコードは問題ありません:

そして、これは大丈夫です:

では、なぜこれは大丈夫ではないのでしょうか。

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

c++ - 実装の安全なnullptr

従来のC++(「NULL」を使用したC ++コード)と新しいC ++ 11標準(「nullptr」を使用したC ++コード)の両方でコードをコンパイルできるようにしたい

私はGCCを使用していますが、最も重要なことを終えるときに、VS用にもコードベース全体を再コンパイルすることを計画しています。

GCCとVSの両方が次のようなことをすることを期待する必要があります

または、自分でそれを行う方が良いですか(もちろん、別の名前を使用します。MY_LIBはライブラリのサフィックスに置き換えられます)。

私が達成したいのは、C ++ 11機能が実装されているかどうかに関係なくコンパイルされるコードです(テンプレートを使用していないため、テンプレートはほとんどありません)。

たとえば、キーワード「override」と「final」はすでに実行されています。

「nullptr」の質問は少し奇妙だとわかっているので、質問をしているので、オーバーライドとファイナルですでに行ったのと同じことをするのは間違っているかもしれません。それについての意見が必要です。どんな助けでも大歓迎です。

0 投票する
7 に答える
57041 参照

c++ - nullptr を使用する利点は何ですか?

このコードは、概念的には 3 つのポインターに対して同じことを行います (安全なポインターの初期化)。

nullptrでは、ポインタに値を割り当てるよりも、ポインタを割り当てる利点は何NULLですか0?

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

c++ - 新しいオブジェクトのnull関数ポインタは実際にはnullptrではありません

Visual Studio2012でC++(11)を使用しています。

カスタムメイドのラッパークラスを使用してウィンドウを作成します。

各ウィンドウには、pluggabeイベント用の一連の「ソケット」があります。

メッセージループでウィンドウクラスに割り当てることができるさまざまなソケットを呼び出すために、次のマクロを使用します。

私は以下のような状況にあります。

ブレークポイントのあるコード

pWindowはCUIWindowオブジェクトへの有効なポインタであると想定できます。

示されているブレークポイントでは、初期化されていないOnXXXXイベントの一部が0xCDCDCDCDとして定義され、メッセージが到着したときに呼び出されます(クラスの作成後に実際に明示的に設定することはありません)。関数ポインタが不良であるため、これにより0x0BADFOOD例外が発生します。null関数ポインタがキャッチされたif ( fn != nullptr )と思っていたのですが、今はよくわかりません。助けを求めています。

  1. これが発生している理由を説明する
  2. ソケットが非常に多い場合があるため、コンストラクターですべての関数ポインターを明示的にゼロに設定せずに、これが発生しないようにするための最良の方法を見つけてください。
0 投票する
4 に答える
5356 参照

c++ - nullptr のアドレスを取得できないのはなぜですか?

C++ 11標準では、自分のインスタンスのアドレスを取得できるのに、のアドレスを取得することnullptr許可されていない理由がわかりません。予約済みのキーワードであるという事実を除けば、この決定には特定の理由がありますか?std::nullptr_tnullptr

単に私を楽しませるために、次の関数を使用してこの制限を回避しようとしました。

reinterpret_castパラメータがないとヒステリックなエラーが発生するため、パラメータを使用する必要がありました。

nullptrを直接渡してこの関数を呼び出すと、毎回異なるアドレスが取得されます。nullptr比較などのためにジャストインタイムで動的にアドレスが割り当てられますか? または (おそらくより可能性が高い) コンパイラは、基になるオブジェクトの一時的なコピーを強制していますか?

もちろん、これはどれも重要な情報ではありません。なぜこの特定の制限が実装されたのか (そして、なぜ私が今のような行動を見ているのか) が興味深いと思います。

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

reference - ローカル ブロックへの後続のエントリで C++/CLI 参照が nullptr に初期化されない

C++/CLI で、明示的な初期値なしでローカル参照変数を宣言すると、常に nullptr に初期化されると考えました。これは、ローカル ブロックへの 2 回目以降のエントリでは発生しないことがわかっています。これがサンプルコードです。

これからの出力は次のとおりです。

明示的な初期化を追加すると

次に、各ループが参照と localI を再初期化します

これは、私がMSDN で見つけ次の内容と矛盾しているようです。

「次のコード例は、ハンドルが宣言され、明示的に初期化されていない場合、デフォルトで nullptr に初期化されることを示しています。」