0
我給列表迭代器指針和列表指針函數。但是我得到的錯誤:傳遞列表列表迭代器作爲指針C++
error: no matching function for call to ‘SignalGrouper::DoesPeriodExist(std::__cxx11::list<wSignal>*, std::__cxx11::list<wSignal>::iterator&)’
if((DoesPeriodExist(&donePeriods,it2)==false) && it2->dTime < maxPeriod && it2->dTime > minPeriod)
函數調用指針函數:
std::list<std::list<wSignal>> SignalGrouper::groupByPeriod (std::list<wSignal> signals, int secs)
{
std::list<std::list<wSignal>> groupedSignals;
std::list<wSignal> donePeriods;
for (std::list<wSignal>::iterator it1=signals.begin(); it1 != signals.end(); ++it1)
{
if(DoesPeriodExist(&donePeriods,it1)==false) //check if period is already been grouped
{
boost::posix_time::ptime maxPeriod = boost::posix_time::ptime(it1->dTime);
boost::posix_time::ptime minPeriod = boost::posix_time::ptime(it1->dTime);
maxPeriod += boost::posix_time::seconds(secs/2);
minPeriod -= boost::posix_time::seconds(secs/2);
std::list<wSignal> oneSignalPeriod;
for (std::list<wSignal>::iterator it2=signals.begin(); it2 != signals.end(); ++it2)
{
if((DoesPeriodExist(&donePeriods,it2)==false) && it2->dTime < maxPeriod && it2->dTime > minPeriod) //check if period is already been grouped
{
oneSignalPeriod.push_back(*it2);
donePeriods.push_back(*it2);
}
}
groupedSignals.push_back(oneSignalPeriod);
}
}
return groupedSignals;
}
指針功能:
bool SignalGrouper::DoesPeriodExist (std::list<wSignal>* signals, wSignal* s)
{
for (std::list<wSignal>::iterator it1=signals->begin(); it1 != signals->end(); ++it1)
{
if((it1->apNr == s->apNr) && (it1->MAC == s->MAC) && (it1->RSSI == s->RSSI) && (it1->dTime == s->dTime))
{
return true;
}
}
return false;
}
我在做什麼錯。我如何使用指針函數指針?
你是如何通過指針傳遞的?通過引用傳遞會使語法變得更加簡單。 – NathanOliver
由於錯誤提示您正在嘗試將* iterator *而不是* pointer *作爲第二個參數。 –