要素を中に入れるたびに並べ替える必要のあるベクトルvecがあります
したがって、最初のアップグレード*をベクター内に配置しても問題はありません。
しかし、2番目のUpgrade *をその中に入れて、sortルーチンが呼び出されると、ランタイムエラーが発生します
これは、要素を配置し、挿入するたびにsortを呼び出す方法です。
std::vector<Upgrade*> stack = getStack();
stack.push_back(element);
std::sort(stack.begin(), stack.end(), CostBenefitUpgradeOrder());
これが私のコンパレータです
struct CostBenefitUpgradeOrder {
bool operator ()(const Upgrade * u1, const Upgrade * u2) const {
const UpgradeType upgradeType1 = u1->getUpgradeType();
const UpgradeType upgradeType2 = u2->getUpgradeType();
int price1 = PriceUtil::getPrice(upgradeType1);
int price2 = PriceUtil::getPrice(upgradeType2);
if (price2 < price1)
return true;
else
return false;
}
}
これがエラーです
プログラムをデバッグモードで実行した場合にのみ発生することに気づきました。