c++ - 在 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 结构中
解决方案
如果将函数分配给变量会发生什么,如下所示
您没有将函数分配给变量。您正在调用一个函数,并将结果分配给该变量。
您还没有显示是什么BYTE
,但它很可能是任何一个unsigned char
(或可能char
)的类型别名。
您不能将函数分配给变量,因为函数不是对象。您只能将指向函数的指针分配给变量,例如
BYTE (*pGetCodec)(BYTE) = &CWAV::GetCodec;
auto pGetCodec2 = &CWAV::GetCodec;
using GetCodecF = BYTE (*)(BYTE);
GetCodecF pGetCodec3 = &CWAV::GetCodec;
推荐阅读
- java - intelij中的织物崩溃
- web-component - Preact css-modules 在 webcomponent 中导入 css
- c - printf before scanf 在输入之前不显示 printf 字符串
- c# - 如何在 C# 中使用包含斜杠字符的路径参数调用 API 资源
- reactjs - 为什么我收到“无法读取未定义的属性‘状态’”错误?
- azure-api-management - 如何使用转发 URL 执行 302 重定向
- java - ContentResolver#bulkInsert 比一个一个地做 ContentResolver#insert 更快吗?
- docker - 使用 SAM 和 docker-compose 运行基于 docker 的 lambda
- html - 使用 css 自定义图标
- android - Riverpod 不会重建 UI