Ошибка при компиляции модульного теста в VS 2012
У меня есть модульный тест, определенный в VS 2012, и он не будет компилироваться из-за ошибки C2338.
ошибка C2338: автор сценария должен определить специализацию ToString для вашего класса std::basic_string, класс std::allocator > __cdecl Microsoft::VisualStudio::CppUnitTestFramework::ToString(const struct CoreUnitTests::TestStruct &). c:\program files (x86)\ Microsoft Visual Studio 11.0\vc\unittest\include\cppunittestassert.h
Это происходит, когда выполняется тест Assert::AreEqual. Мне нужно определить метод ToString для типа.
Я следовал инструкциям, приведенным в cppunittestassert.h, а также нашел решение в Интернете, которое я вставил. Однако ошибка все еще происходит.
Вот пример кода, который я использую:
struct TestStruct
{
public:
float f;
int i;
bool operator == (const TestStruct& rhs) const
{
return (f == rhs.f) && (i == rhs.i);
}
};
namespace Microsoft
{
namespace VisualStudio
{
namespace CppUnitTestFramework
{
template<>
static std::wstring ToString<TestStruct>(const TestStruct& t)
{
std::wstringstream stream;
stream << "TestStruct";
return stream.str();
}
}
}
}
Я, очевидно, все еще делаю что-то не так. У кого-нибудь есть идеи. Я уже пробовал добавить в TestStruct* версию, и это не помогает.
Я подозреваю, что это может быть связано с пространствами имен, но я не уверен, как решить эту проблему.
Спасибо