Entry.h
:C++的std ::排序() - 無法進行排序訪問成員變量的類類型的矢量
//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));
這僅僅是一個部分的代碼,但我認爲這是足以讓感。編譯時,我得到的錯誤(S):
嚴重性代碼說明項目文件行錯誤C2451條件 表達型「的std :: _非受迫性」是非法彩票類別E:\程序 文件(x86)\微軟的Visual Studio 14.0 \ VC \包括\算法3133
嚴重性代碼說明項目文件行錯誤C2675一元「!」: 「的std :: _非受迫性」不定義此運算符或轉換到 類型可以接受的預定義的操作員彩票排序e:\ program files(x86)\ microsoft visual studio 14.0 \ vc \ include \ algorithm 3118
問:
可能是什麼問題呢?
後,幾乎編譯代碼...你以爲'類{彩票'...'};'是不相關? 'sumOfNonMegaEntryPct'沒有被聲明爲成員函數。不重要的是如何在.h和.cpp文件之間劃分代碼,您可以在類定義本身中定義成員函數。 – LogicStuff