疑似コード (これは私のクラスです):
struct cTileState {
cTileState(unsigned int tileX, unsigned int tileY, unsigned int texNr) : tileX(tileX), tileY(tileY), texNr(texNr) {}
unsigned int tileX;
unsigned int tileY;
unsigned int texNr;
bool operator==(const cTileState & r)
{
if (tileX == r.tileX && tileY == r.tileY && texNr == r.texNr) return true;
else return false;
}
};
次に、2 つのコンテナーがあります。
std::list < std::vector <cTileState> > changesList; //stores states in specific order
std::vector <cTileState> nextState;
そして、プログラムのどこかで、状態スワップ関数でそれを実行したいと考えています:
if (nextState == changesList.back()) return;
ただし、コンパイルしたい場合、次のような意味のないエラーがいくつかあります。
/usr/include/c++/4.7/bits/stl_vector.h:1372:58: 'bool std::operator==(const std::vector<_Tp, _Alloc>&, const std::vector<_Tp, _Alloc>&) [with _Tp = cMapEditor::cActionsHistory::cTileState; _Alloc = std::アロケーター]'</p>
エラー: 'const cMapEditor::cActionsHistory::cTileState' を 'bool cMapEditor::cActionsHistory::cTileState::operator==(const cMapEditor::cActionsHistory::cTileState&)' の 'this' 引数として渡すと、修飾子が破棄されます [-fpermissive]
stl_vector.h に何か問題があり、const 修飾子を尊重しないと書かれていますが、正直なところ、私が尊重しない const 修飾子はありません。ここで何が問題なのですか?
さらに、ide はファイルの特定の行にエラーを表示しません。ビルド ログに表示されるだけです。