[解決済み] xutility.h エラー C2064: 項目が引数を 2 つ取る関数として評価されない
2022-02-02 17:43:13
質問
質問したいことがあるのですが。
AstarPlanlamaというクラスを作り、以下の2つの関数を持っています。
bool AstarPlanlama::nodeComp(const Node* lhs, const Node* rhs)
{
return lhs->F < rhs->F;
}
void AstarPlanlama::enKucukFliNodeBul(std::list<Node*> * OPEN)
{
std::list<Node*>::iterator it = std::min_element(OPEN->begin(), OPEN->end(), &AstarPlanlama::nodeComp);
OPEN->sort(&AstarPlanlama::nodeComp);
Q = OPEN->front();
OPEN->pop_front();
}
私のコードをコンパイルすると、エラーが xutility.h ファイルを作成します。
template<class _Pr, class _Ty1, class _Ty2> inline
bool _Debug_lt_pred(_Pr _Pred,
_Ty1& _Left, _Ty2& _Right,
_Dbfile_t _File, _Dbline_t _Line)
{ // test if _Pred(_Left, _Right) and _Pred is strict weak ordering
if (!_Pred(_Left, _Right))
return (false);
else if (_Pred(_Right, _Left))
_DEBUG_ERROR2("invalid operator<", _File, _Line);
return (true);
}
関数のデクラレーション
bool nodeComp(const Node* lhs, const Node* rhs);
void enKucukFliNodeBul(std::list<Node*> * OPEN);
エラー行は if (!_Pred(_Left, _Right))
このコードのどこが問題なのでしょうか?
ご返品ありがとうございます。
よろしくお願いします。
解決方法は?
カスタムコンパレータとしてメンバ関数を渡しているようです。
それを
static
を使用するか
std::bind
:
std::list<Node*>::iterator it = std::min_element(OPEN->begin(), OPEN->end(),
std::bind(&AstarPlanlama::nodeComp,
this,
std::placeholders::_1,
std::placeholders::_2));
OPEN->sort(std::bind(&AstarPlanlama::nodeComp,
this,
std::placeholders::_1,
std::placeholders::_2));
メンバー関数は特殊で、オブジェクトに対して呼び出す必要があります。
std::bind
にバインドするために必要です。
this
のポインタを使用します。
関連
-
[解決済み】cc1plus:エラー:g++で認識されないコマンドラインオプション"-std=c++11"
-
[解決済み】オブジェクト引数のない非静的メンバ関数の呼び出し コンパイラーエラー
-
[解決済み】#include<iostream>は存在するのですが、「識別子 "cout "は未定義です」というエラーが出ます。なぜですか?
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み】クラスのコンストラクタへの未定義参照、.cppファイルの修正も含む
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み】 while(cin) と while(cin >> num) の違いは何ですか?)
-
[解決済み】Enterキーを押して続行する
-
[解決済み】演算子のオーバーロード C++; <<操作のパラメータが多すぎる
-
[解決済み】警告 - 符号付き整数式と符号なし整数式の比較
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】coutはstdのメンバではない
-
[解決済み】識別子 "string "は未定義?
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み] クラスにデフォルトコンストラクタが存在しない。
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み] 非静的データメンバの無効な使用
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み] to_string は std のメンバーではない、と g++ が言っている (mingw)