错误C2064:term不计算为采用0参数的函数

时间:2011-07-03 04:43:00

标签: c++ pointers map

大家好! 我在地图容器中维护一组通道数据,通过其通道名称可以从中访问单个通道数据。关于这一点,我写了一个简单的函数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;
}

2 个答案:

答案 0 :(得分:11)

错误信息很清楚......你调用的函数不存在。 map::iterator指向std::pair,其中包含两个成员对象firstsecond。请注意,这些不是功能。从相关行中删除(),错误应该消失。

答案 1 :(得分:3)

看起来cit->second无法识别函数指针。你的迭代器的定义声称它是指向(Array2D<unsigned short>)的指针; pusIRChannelData(Array2D *),因此您可能需要cit->second而不是cit->second()(尝试将(Array2D *)作为函数调用)。