繁体   English   中英

函数重载的最大数量?

[英]Maximum number of function overloads?

在C ++中是否存在可以相互重载的最大数量的函数?

我遇到了令人困惑的“无匹配功能”错误。 我有一个重载的encode函数,每个编码的结构/值类型(包括数组/向量的模板)都有大约900个不同的版本。 编码函数根据需要编码的字段相互调用。

如果我将我的encode(std::string)函数放在文件的底部(.h和.cpp),对它的调用将返回“无匹配函数”。 如果它在顶部附近,那么他们就不会。

发生了什么,更重要的是,我该如何解决?

(linux gcc版本4.6.1)

通过根据函数放置位置对错误出现和消失的描述,这与重载次数无关。 相反,问题是你试图在声明之前调用重载。

当您有一堆可以按照您描述的方式相互调用的函数时(无论它们是重载还是具有不同的名称),通常都需要先对所有函数进行DECLARE,然后在看到所有定义之后再对其进行定义。 通常你构造这个,所以声明都在头文件中(所以其他文件包括它)和定义都在源文件(包括头文件)中,所以这一切都很容易。 如果您具有内联函数(通常需要在头文件中定义才能在所有编译单元中内联),事情会变得更加复杂,但是总体模式是相同的–首先对所有内容进行DECLARE,然后对所有内容进行DEFINE。

编辑

您究竟从哪里得到“没有匹配的过载”错误? -您需要在包含编码函数的DECLARATION之后移动包含获取该错误的调用的DEFINITION(或将DEDECITION之前的编码DECLARATION移至出现错误的位置)。 只要所有声明都在所有定义之前,排序就可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM