我只是在寻找有关 C++ 工作原理的说明,这并不是真正要解决我的代码中的特定问题。
在 C++ 中,您可以说类型 A 应该以两种不同的方式隐式转换为类型 B。
如果您是 A 的作者,您可以在 A 中添加如下内容:
operator B() {
// code
}
如果您是 B 的作者,您可以在 B 中添加如下内容:
B(const A &a) {
// code
}
如果我理解正确,其中任何一个都将允许 A 隐式转换为 B。那么如果两者都定义了,使用哪一个?这还允许吗?
注意:我知道您可能永远不会遇到这样做的情况。您可以使构造函数显式,或者更有可能只有两者之一。我只是想知道 C++ 规范说了什么,我不知道如何查找。
最佳答案
[C++11: 12.3/2]:
User-defined conversions are applied only where they are unambiguous. [..]
12.3 继续列出您确定的两种类型。
关于c++ - 由于在 C++ 中有两种定义转换的方法,当同一个转换有两种可能性时,它们如何交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22444415/