首页 > 解决方案 > 在 C++ 中将函数分配给变量

问题描述

如果将函数分配给变量会发生什么,如下所示

unsigned char uchHeaderVer; 
uchHeaderVer = GetCodec(Page.Version);

BYTE CWAV::GetCodec(BYTE byVersion)
{
    RecorderInfoMap::iterator it;

    if ((it = m_mapRecInfo.find(byVersion)) != m_mapRecInfo.end()) {
        return (BYTE) ((*it).second.nCodec);
    } else {
        return 4;
    }
}

版本是 BYTE 类型,存储在 typedef 结构中

标签: c++

解决方案


如果将函数分配给变量会发生什么,如下所示

没有将函数分配给变量。您正在调用一个函数,并将结果分配给该变量。

您还没有显示是什么BYTE,但它很可能是任何一个unsigned char(或可能char)的类型别名。

您不能将函数分配给变量,因为函数不是对象。您只能将指向函数的指针分配给变量,例如

BYTE (*pGetCodec)(BYTE) = &CWAV::GetCodec;
auto pGetCodec2 = &CWAV::GetCodec;
using GetCodecF = BYTE (*)(BYTE);
GetCodecF pGetCodec3 = &CWAV::GetCodec;

推荐阅读