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

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

Спасибо

0 ответов

Другие вопросы по тегам