我希望简单的问题。
是否可以在任一类之外定义类转换(等于运算符)?
这源于" api"喜欢我图书馆的图层。所以我可以根据较低级别的库编译选择代码。
示例:
foo.hpp(这是我的来源)
class foo
{
}
bar.hpp(这不是我的来源)
class bar
{
}
conversions.hpp(此文件根据链接的低级别图层更改)
bar operator=(const foo& other)
{
}
运算符将抛出编译器错误,因为它在静态上下文中,应该在类声明中声明。这不是一个真正的选择,因为该类可以改变。
答案 0 :(得分:0)
您可以在foo
中定义隐式转换操作:
class foo
{
public:
operator bar() const
{
//make bar from this foo
}
};
您现在可以执行以下操作:
bar b = foo();//b gets copy-initialized using the implicit conversion above
b = foo();//Since bar doesn't have an operator=(const foo&), standard conversions would apply. The user-defined foo to bar conversion kicks in followed by a bar copy/move.