【发布时间】:2015-10-31 07:46:57
【问题描述】:
Entry.h:
//returns the sum of all non mega entry percentages
float sumOfNonMegaEntryPct(vector<Number>& arg1_Numbers);
Entry.cpp:
//returns the sum of all mega entry percentages
float Entry::sumOfMegaEntryPct(vector<MegaNumber>& arg1_MegaNumbers)
{
float sumPct = 0.00f;
for (MegaNumber c : megaEntry)
{
sumPct = sumPct + arg1_MegaNumbers[c.getID()].getOccurencePct();
}
return sumPct;
}
Lotto.h:
public:
//compares two entries, used for sorting algorithm, sorts by nonmega number
bool compareEntry_sumPct_nonMega(Entry arg1, Entry arg2);
protected:
vector<Numbers> numbers;
vector<MegaNumbers> megaNumbers;
Lotto.cpp:
#include "lotto.h"
//sorts nonmega numbers by sum of their pct, used for sort algorithm
bool Lotto::compareEntry_sumPct_nonMega(Entry arg1, Entry arg2)
{
bool b = arg1.sumOfNonMegaEntryPct(numbers) < arg2.sumOfNonMegaEntryPct(numbers);
return b;
}
Source.cpp:
vector<Entry> copyGameEntry = game.getPlayEntry();
sort(copyGameEntry.begin(), copyGameEntry.end(),
bind(&Lotto::compareEntry_sumPct_nonMega, game));
这只是代码的一部分,但我认为它已经足够有意义了。编译时出现错误:
严重性代码描述项目文件行错误 C2451 条件 'std::_Unforced' 类型的表达式是非法的 Lottery Sort e:\program 文件 (x86)\microsoft visual studio 14.0\vc\include\algorithm 3133
严重性代码描述项目文件行错误 C2675 一元“!”: 'std::_Unforced' 未定义此运算符或转换为 预定义运算符 Lottery Sort e:\program 可接受的类型 文件 (x86)\microsoft visual studio 14.0\vc\include\algorithm 3118
问题:
可能是什么问题?
【问题讨论】:
-
发布一个几乎可以编译的代码...你认为
class Lottery {...};不相关?sumOfNonMegaEntryPct未声明为成员函数。不重要的是如何在 .h 和 .cpp 文件之间划分代码,您可以在类定义本身中定义成员函数。
标签: c++ function class sorting std