当我在 VS 2012 上使用 Visual Studio 本机单元测试时,我来找你一个奇怪的问题。我有一个这样的 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:对不起,我的英语不是我的母语。