我在VS 2012上使用Visual Studio Native Unit Test時遇到了一個奇怪的問題。 我有一個座標類這樣的:VS2012:單元測試錯誤:Assert :: AreEqual(object,object)不起作用
#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;
};
}
所以,當我使用的問題出現: 斷言:: AreEqual(座標爲(0,0),(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:對不起,我的英語,不是我的母語。
錯誤錯誤C2338:測試作家必須定義的ToString專業化爲你的類類的std :: basic_string的,一流的std ::分配器> __cdecl微軟的VisualStudio :: :: CppUnitTestFramework :: ToString (const class Core :: Coordinates&)。 \t C:\ program files(x86)\ microsoft visual studio 11.0 \ vc \ unittest \ include \ cppunittestassert.h 1單元測試1 –
Winter
2013-05-01 03:47:55
只是爲了補充說明,對於任何不改變的方法/函數/運算符重載當前對象和任何你不打算改變的參數應該用一個const標記。 – 2013-05-01 03:48:39
除非有理由創建副本,否則請使用'bool operator ==(const Coordinates&coordinates)const' – Mordachai 2013-05-01 03:54:43