【发布时间】:2012-01-12 21:14:03
【问题描述】:
在 C++ 中,可以相互重载的函数有最大数量吗?
我遇到了令人困惑的“无匹配功能”错误。我有一个重载的encode 函数,对于我正在编码的每个结构/值类型(包括数组/向量的模板),大约有 900 个不同的版本。编码函数根据需要编码的字段相互调用。
如果我将 encode(std::string) 函数放在文件(.h 和 .cpp)的底部,则对它的调用会返回“无匹配函数”。如果它靠近顶部,则它们不会。
发生了什么,更重要的是,我应该如何解决?
(linux gcc 版本 4.6.1)
【问题讨论】:
-
你有 900 次重载?????? ?? ???我将从适当地对重载进行分组开始,通常大多数编译器都支持版本选项...阅读您的编译器手册..
-
为什么你认为 900 次重载很多?
stream operator << (stream, smtn_other)的重载呢? -
@Nim 嗯,这是一个插件,我正在用
make install为主程序编译它。这链接了主程序中的所有库,因此我可以在我的编码插件中引用它们。我认为它使用的是 gcc,版本为 4.6.1 -
@Lol4t0:我不确定
operator<<()有多少重载,但我无法说出超过 50 个。 -
这完全符合 Raymond Chen 的台词“如果你不得不问,你可能做错了什么”。我会为实际有 1025 次重载付出代价。