前提・実現したいこと
c++で2次元vectorに格納した値の比較、ソートを行っています。
発生している問題・エラーメッセージ
remove_if、sort関数の第三因数にて識別子が定義されていないというエラーが出ていますが解決策がわかりません。
エラーメッセージ comp、choiceの識別子が定義されていない class vec { public: double x, y; bool comp(const vec& rLeft, const vec& rRight); bool choice(const vec& right); }; bool vec::comp(const vec& rLeft, const vec& rRight) { return ((rLeft.x * rLeft.x) + (rLeft.y * rLeft.y)) < ((rRight.x * rRight.x) + (rRight.y * rRight.y)); } bool vec::choice(const vec& right) { return(right.x < -10 || right.x>10 || right.y < -10 || right.y>10); } int main() { vector<vec> v; vec t = vec(); v.resize(10000); for (auto p = v.begin(); p != v.end(); p++) { (*p).x = rand() % 100; (*p).y = rand() % 100; } auto rmvIter = remove_if(v.begin(), v.end(), choice); v.erase(rmvIter, v.end()); sort(v.begin(), v.end(), comp); system("pause"); return 0; } ### 試したこと comp、choice関数をクラスの外でのみ定義するとエラーが解決できることを確認しました。 クラスの使用方法がおかしいのでしょうか? ### 補足情報(FW/ツールのバージョンなど) visual studio を使用しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/13 12:56