「オブジェクトのメンバ関数に互換性のない型修飾子があります」というエラー解決

Visual Studioでこんなエラーが出た。

オブジェクトにメンバ関数と互換性のない型修飾子があります

これの解決方法は、
例えば、こんなソースがあったとする。

//Coordinate.h
#if !defined(___COORDINATE)
#define      ___COORDINATE

class Coordinate
{
    double mX;
    double mY;
public:
    Coordinate(void);
    ~Coordinate(void);
    Coordinate(double const argX, double const argY)
        :mX(argX), mY(argY){}
    Coordinate(const Coordinate& argCoordinate);

    void operator()(double const argX, double const argY)
    {
        mX = argX;
        mY = argY;
    }
    double GetX() { return mX; }
    double GetY(){ return mY; }
};

#endif
//Coordinate.cpp
#include "Coordinate.h"

Coordinate::Coordinate(void)
 :mX(0), mY(0){}

Coordinate::~Coordinate(void){}

Coordinate::Coordinate(const Coordinate& argCoordinate)
{
	mX = argCoordinate.GetX();
	mY = argCoordinate.GetY();
}

Coordinate.cppの方で引数のargCoordinateのGetメソッドを使いたいけれど、
↓のargCoordinateに「オブジェクトのメンバ関数に互換性のない型修飾子があります」というエラーが出る。

Coordinate::Coordinate(const Coordinate& argCoordinate)
{
	mX = argCoordinate.GetX();
	mY = argCoordinate.GetY();
}

なにが必要かというとGetX(), GetY()に const がないといけない。これがないとエラーが出る。constは

double GetX() const { return mX; }
double GetY() const { return mY; }

こんな風に")" と "{" の間 const に書く。そうするとエラーを解消することができた。

これで解決しなかったらその時は...どうしましょうね。