2017-07-18 5 views
0

私はリストイテレータポインタと関数へのリストポインタを与えています。しかし、私はエラーを取得する:ポインタの関数を呼び出す渡しリストenterイテレータをポインタとして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; 
} 

は私が間違って何をやっています。ポインター関数をポインターで使用するにはどうすればよいですか?

+2

どのようにポインタを渡していますか?参照渡しは、構文がずっと簡単になります。 – NathanOliver

+1

エラーとして、*イテレータ*と第2引数として*ポインタ*を渡そうとしています。 –

答えて

2

呼び出している関数は、署名

bool SignalGrouper::DoesPeriodExist (std::list<wSignal>* signals, wSignal* s) 

を持っていますが、この行に

DoesPeriodExist(&donePeriods,it1) 

あなたは

を言うことができる

DoesPeriodExist (std::list<wSignal>* signals, std::list<wSignal>::iterator s) 

が正しい型を渡すためにそれを渡しています

DoesPeriodExist(&donePeriods, &(*it1)) 
関連する問題