前提・実現したいこと
listにpushしたクラスを、メンバ関数内で自殺させたいのですが、出来ません。
どうすればこれを実現出来るのでしょうか?
また、調べていて思ったのですが、これ仮に削除出来ても、イテレータのループの所で問題が起きるのでしょうか?
その場合は、どのように対処すればいいのでしょうか?
発生している問題・エラーメッセージ
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー C2678 二項演算子 '==': 型 'cEnemy' の左オペランドを扱う演算子が見つかりません (または変換できません) (新しい動作; ヘルプを参照)。 ConsoleTest c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.13.26128\include\list 1548
該当のソースコード
C++
1#include<iostream> 2#include<list> 3 4class cEnemy { 5public: 6 void F(); 7}; 8 9std::list<cEnemy> TestList; 10 11int main() { 12 TestList.push_back(cEnemy()); 13 TestList.push_back(cEnemy()); 14 TestList.push_back(cEnemy()); 15 16 for (auto IT = TestList.begin(); IT != TestList.end(); IT++) { 17 IT->F(); 18 } 19 20 return 0; 21} 22 23void cEnemy::F() { 24 //画面外に出たら、殺す 25 if (true) { 26 TestList.remove(*this); 27 } 28} 29
試したこと
「C2678」でグーグル検索
「C++ list 自分 削除」でグーグル検索
補足情報(FW/ツールのバージョンなど)
OS:Windows10
コンパイラ:VisualStudio2017
言語:C++

回答4件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。