VS 2012でVisual Studioネイティブユニットテストを使用すると奇妙な問題が発生しました。 I've a Coordinatesそのようなクラス:私が使用している場合VS2012:ユニットテストでエラーが発生しました:Assert :: AreEqual(オブジェクト、オブジェクト)が機能しませんでした
#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:テスト作家が自分のクラスのクラスのstd ToStringメソッドの特殊化を定義する必要があります::マイクロソフト:: VisualStudioを__cdeclのbasic_string 、クラスのstd ::アロケータ> :: CppUnitTestFramework :: ToString (constクラスCore :: Coordinates&)。 \t c:\ program files(x86)\ microsoft visual studio 11.0 \ vc \ unittest \ include \ cppunittestassert.h UnitTest1 –
Winter
これを追加するだけで、変更されていないメソッド/関数/演算子のオーバーロード現在のオブジェクトと変更したくないパラメータは、constでマークする必要があります。 –
そして、コピーを作成する理由がなければ、 'bool operator ==(const座標と座標)const' – Mordachai