【发布时间】:2017-12-23 06:39:31
【问题描述】:
我给出了一个列表迭代器指针和一个指向函数的列表指针。但是我得到了错误:
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;
}
我做错了什么。指针函数如何使用?
【问题讨论】:
-
你怎么会通过指针?通过引用传递使语法更容易。
-
正如错误所说,您正在尝试传递 iterator 而不是 pointer 作为第二个参数。
标签: c++ list function pointers iterator