VS 2012 で Visual Studio Native Unit Test を使用すると、奇妙な問題が発生します。次のような Coordinates クラスがあります。
#ifndef COORDINATES_HPP
#define COORDINATES_HPP
#include <iostream>
namespace Core {
class Coordinates {
public:
Coordinates();
Coordinates( int x, int y );
Coordinates( const Coordinates © );
~Coordinates();
void operator=( Coordinates coordinates );
void operator+=( Coordinates coordinates );
void operator-=( Coordinates coordinates );
Coordinates operator+( Coordinates coordinates );
Coordinates operator-( Coordinates coordinates );
bool operator==( Coordinates coordinates );
bool operator!=( Coordinates coordinates );
int getX() const { return m_x; }
int getY() const { return m_y; }
void setX( const int &val ) { m_x = val; }
void setY( const int &val ) { m_y = val; }
protected:
int m_x, m_y;
};
}
したがって、Assert::AreEqual( Coordinates(0,0), Coordinates(0,0) ); を使用すると問題が発生します。
送信されるエラーは次のとおりです: エラー 1 エラー C2678: バイナリ '==' : タイプ 'const Core::Coordinates' の左側のオペランドを取る演算子が見つかりません (または、受け入れ可能な変換がありません) c:\program files (x86 )\Microsoft Visual Studio 11.0\vc\unittest\include\cppunittestassert.h 129 1 UnitTest1
それを修正するためのアイデアはありますか?
PS: 私の英語は私の母国語ではありません。