11

Visual Studio 2010 で C++ を使用しています。 を に変換中NULLですnullptr。私のコードではこれで問題ありません。ただし、次のような WINAPI を呼び出すと:

__checkReturn WINOLEAPI OleInitialize(IN LPVOID pvReserved);

通常、私はこれを次のように呼び出します:

::OleInitialize(NULL);

このような通話でnullptr使用したはずの場所を安全に使用できますか?NULL

つまり、私はこれを行うことができます:

::OleInitialize(nullptr);

また、MFC api と同じ:

CFileDialog fileDlg(TRUE, ".txt", NULL, 0, strFilter);

交換できますか

CFileDialog fileDlg(TRUE, ".txt", nullptr, 0, strFilter);

できると思いますが、落とし穴がないことを確認したいだけです。

アップデート

だから私は行って、すべての NULL を nullptr に置き換えました。ほとんどどこでも機能するようですが、次の行で以下のエラーが発生しています。

propertyItem = new CMFCPropertyGridProperty(_T("SomeName"),
"SomeValue", "SomeDescription", nullptr, nullptr, nullptr, nullptr);

8>c:\something\something.cpp(118): エラー C2664: 'CMFCPropertyGridProperty::CMFCPropertyGridProperty(const CString &,const COleVariant &,LPCTSTR,DWORD_PTR,LPCTSTR,LPCTSTR,LPCTSTR)': 'nullptr からパラメーター 4 を変換できません' to 'DWORD_PTR' 8> ネイティブ nullptr は bool に、または reinterpret_cast を使用して整数型にのみ変換できます

(CMFCPropertyGridProperty は Microsoft MFC クラスであることに注意してください) では、それはどういう意味ですか?

4

1 に答える 1

17

nullptrはい、どこでも安全に使用できますNULL

NULL値ゼロの整数定数式に展開され、任意の型の null ポインター値に変換できます。nullptrは、まったく同じことを行う「ポインター リテラル」です。任意の型の null ポインター値に変換されます。

詳細はこちら

于 2011-10-29T22:33:39.113 に答える