Ошибка при компиляции модульного теста в 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 \ включать \ 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 * версию, и это не помогает.

Я подозреваю, что это может быть связано с пространствами имен, но я не уверен, как решить эту проблему.

Спасибо

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]