のねのBlog

パソコンの問題や、ソフトウェアの開発で起きた問題など書いていきます。よろしくお願いします^^。

C2338 Test writer must define specialization of ToString<const Q& q> for your class

unsigned shortがあると、このエラーになる。

C2338    Test writer must define specialization of ToString<const Q& q> for your class 

class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,

class std::allocator<wchar_t> > 
__cdecl Microsoft::VisualStudio::CppUnitTestFramework
::ToString<unsigned short>(const unsigned short &).   

c:\program files (x86)\microsoft visual studio\2017\enterprise\vc\auxiliary\vs\unittest\include\cppunittestassert.h 66  

このような、コードを入れると、エラーが消える。

namespace Microsoft {
    namespace VisualStudio {
        namespace CppUnitTestFramework
        {
            template<> inline std::wstring ToString<unsigned short>(const unsigned short& t) { RETURN_WIDE_STRING(t); }
            template<> inline std::wstring ToString<unsigned short>(const unsigned short* t) { RETURN_WIDE_STRING(t); }
            template<> inline std::wstring ToString<unsigned short>(unsigned short* t) { RETURN_WIDE_STRING(t); }
        }
    }
}