我只是想澄清C++是如何工作的,这不是关于解决我的代码中的特定问题.
在C++中,您可以说类型A应该以两种不同的方式隐式转换为类型B.
如果您是A的作者,可以在A中添加这样的内容:
operator B() {
// code
}
Run Code Online (Sandbox Code Playgroud)
如果您是B的作者,可以向B添加这样的内容:
B(const A &a) {
// code
}
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,其中任何一个都将允许A隐式转换为B.所以,如果两个都被定义使用哪一个?这甚至是允许的吗?
注意:我知道您可能永远不会遇到这种情况.您可以使构造函数显式,也可以只使用两者中的一个.我只是想知道C++规范说的是什么,我不知道如何看待它.