![]() |
1
2
问题由于调用不明确,带和不带显式复制构造函数的版本都不是有效的C++代码。 MSVC编译器碰巧做了一些“神奇的”和非标准的事情来编译它(这是MSVC的一个常见主题)。如果您尝试任何其他主要编译器(gcc、clang、icc),请参阅实时示例 here )他们都没能编译出来。 我不会依赖这种模棱两可的代码,即使它“工作”,因为它可能(也可能会)停止使用另一个编译器版本或不同的编译器。 这种模糊性来自于C++对潜在隐式转换序列进行排序的方式:它总是尝试进行最小数量的转换,最多是一次用户定义的转换。本标准详细描述了这一过程 [class.conv] .
就你而言,打电话时
解决方案有几种方法可以解决此问题:
如何实施方案3请参阅完整示例 here . 简而言之,您需要执行以下操作:
以下是代码的相关更改:
|
![]() |
theimpatientcoder · 该方法对于类型Error不明确 9 年前 |
![]() |
Franko Leon TokaliÄ · 不明确的构造函数调用(我假设) 10 年前 |
|
Pythonista · 这个公式涉及圆圈试图做什么? 11 年前 |