いくつかのコードがあります。
EXPECT_NE(nullptr,ptr);
_
そして、次のコンパイルエラーが発生します。
'operator <<' is ambiguous
could be 'std::basic_ostream<char,std::char_traits<char>> &std::basic_ostream<char,std::char_traits<char>>::operator <<<void>(std::nullptr_t)'
or 'std::basic_ostream<char,std::char_traits<char>> &testing::internal2::operator <<<char,std::char_traits<char>,T>(std::basic_ostream<char,std::char_traits<char>> &,const T &)'
_
これは図書館のバージョンの問題になることができますか?
もっと明確になりたい場合は、使用することもできます
_EXPECT_TRUE(ptr != nullptr);
_
(それが私が通常していることです)
BTW。私の仕事のプロジェクトでは、私はまだC++ 98(まだ太陽とAIXのための建物の構築)と協力しなければならず、私は自分のNullPtrT
クラスとNullPtr
オブジェクトを作成しました。実際にはGTEST _EXPECT_EQ
_と_EXPECT_NE
_マクロで動作します。私がすることができるようにしてください
_EXPECT_NE(NullPtr, ptr);
_
私はその仕事を正確に作った方法を覚えていません:)
namespace {
template<class T>
auto not_nullptr(T*p) -> testing::AssertionResult
{
if (p)
return testing::AssertionSuccess();
else
return testing::AssertionFailure() << "pointer is null";
}
}
...
EXPECT_TRUE(not_nullptr(ptr));
_
参照: