函数重载的最大数量
Maximum number of function overloads?
在C++中,是否存在可以相互重载的最大函数数?
我遇到了令人困惑的"无匹配函数"错误。我有一个重载的encode
函数,对于我正在编码的每个结构/值类型(包括数组/向量的模板),它有大约900个不同的版本。编码函数根据需要编码的字段相互调用。
如果我把encode(std::string)
函数放在文件(.h&.cpp)的底部,对它的调用将返回"没有匹配的函数"。如果它在顶部附近,那么它们就不会。
发生了什么,更重要的是,我应该如何修复它
(linux gcc 4.6.1版)
根据您对错误出现和消失的描述,这与重载的数量无关。相反,问题是您试图在重载声明之前调用它。
当你有一堆函数,它们都像你描述的那样相互调用时(无论它们是重载还是有不同的名称),你通常需要首先声明所有函数,然后在看到所有定义后再定义它们。通常情况下,您会对其进行结构化,使声明都在头文件中(因此其他文件也包括它),定义都在源文件中(包括头),因此这一切都很容易实现。如果有内联函数(通常需要在头文件中定义这些函数才能在所有编译单元中内联),情况会变得更复杂,但总体模式是一样的——首先声明所有内容,然后定义所有内容。
编辑
"无匹配重载"错误究竟是从哪里来的?——您需要将包含获取该错误的调用的DEFINITION移到encode函数的DECLARATION之后(或将encode DECLARATION移到带错误的DEFINITING之前)。只要所有声明都在所有定义之前,订单就可以了。
相关文章:
- 找到不大于 A 的最大数的最有效方法,该数可被 B 整除
- C++:最大数组值函数工作不正常
- 在浮点数32中保存浮点数16最大数
- 使用 DP 的非相邻元素的最大数组总和
- 如何在大数组中最有效地增加指定范围内的值,然后找到最大值
- 找到第 n 个最大数无限循环C++
- 最大数组大小
- C 最大数组大小
- 如何在GPU内存中获取最大数组大小
- 欧拉计划挑战3:找到大数的最大素因数
- 具有最大数组函数的程序
- 这是在包含非唯一元素的未排序数组中选择第k个最大数的最快算法
- 如何递归地找到最大数组元素的索引
- 递归最大数求和
- 如何找到数组中的最大数并用c++显示
- 给定一系列整数,提供第k个最大数
- 在任意加长的集合中查找最大数不起作用
- IEEE 754浮点数,1<的最大数是多少?
- 不与V互质的最大数
- C++是否有最大数组长度限制