大家好!
我在地图容器中维护一组通道数据,通过其通道名称可以从中访问单个通道数据。关于这一点,我写了一个简单的函数GetIRChannelData
(请参阅下面的代码)。在compliing时,语句pusIRChannelData = cit->second();
抛出一个错误,该错误读取
error C2064: term does not evaluate to a function taking 0 arguments
要做的所有功能只不过是在地图容器中搜索给定的通道名称/ ID,并将其指向时间指针(如果找到)。你能告诉我什么是错的吗?
const Array2D<unsigned short>* GetIRChannelData(std::string sChannelName) const
{
const Array2D<unsigned short>* pusIRChannelData = NULL;
for (std::map<std::string, Array2D<unsigned short>* >::const_iterator cit = m_usIRDataPool.begin(); cit != m_usIRDataPool.end(); ++cit)
{
std::string sKey = cit->first;
if (sKey == sChannelName)
{
pusIRChannelData = cit->second(); // Error occurred on this line
break;
}
}
return pusIRChannelData;
}
答案 0 :(得分:11)
错误信息很清楚......你调用的函数不存在。 map::iterator
指向std::pair
,其中包含两个成员对象first
和second
。请注意,这些不是功能。从相关行中删除()
,错误应该消失。
答案 1 :(得分:3)
看起来cit->second
无法识别函数指针。你的迭代器的定义声称它是指向(Array2D<unsigned short>)
的指针; pusIRChannelData
是(Array2D *)
,因此您可能需要cit->second
而不是cit->second()
(尝试将(Array2D *)
作为函数调用)。