8

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 &copy );
    ~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: 私の英語は私の母国語ではありません。

4

2 に答える 2

1

エラー メッセージが表示されたら、operator== をより const に適したものにしてみてください。

bool operator==( const Coordinates coordinates ) const;
于 2013-05-01T03:42:38.340 に答える