0

オブジェクト QActionDonald へのポインターのベクトルがあり、最高の expectedvalue_ を含むオブジェクトを見つけようとしています。operator< をオーバーロードし、 max_element メソッドを使用してイテレータを最高値に取得していますが、常に正しくない終了値を受け取ります。
QActionDonald.h:

class QActionDonald
{
public:

double expectedvalue_;

bool operator < (const QActionDonald& other) const;

}; 

QActionDonald.cpp:

bool QActionDonald::operator< (const QActionDonald& other) const
{
    return expectedvalue_ < other.expectedvalue_;
}

その他のクラス:

std::vector<QActionDonald*> *actionList =  qValueDictionary[stateKey];

        std::vector<QActionDonald*>::iterator it = 
std::max_element(actionList->begin(), actionList->end());
4

1 に答える 1

1

もちろん、そうではありません。コンテナーにはオブジェクトではなくポインターがあるためです。

これを使用するには、正しいロジックを適用std::vector<QActionDonald>するカスタム コンパレータを提供する必要std::max_elementがあります (つまり、ポインターではなくオブジェクトを比較します)。

于 2012-12-06T01:07:37.973 に答える