通常,可以编写一个转换运算符来转换为另一个类,如
struct A {};
struct B
{
operator A()
{
return A();
}
};
现在,如果A
struct的命名空间与B
不同,那该怎么办?
namespace mars {
struct A {};
}
namespace jupiter {
struct B
{
operator A() //??
{
return A();
}
};
}
operator A()
语句应该成为什么?
答案 0 :(得分:2)
您可以简单地完全限定名称
namespace mars {
struct A {};
}
namespace jupiter {
struct B
{
operator mars::A()
{
return mars::A();
}
};
}
作为建议:尽量不要做像
这样的事情using namespace mars;
在全局范围内:当应用程序增长时(例如名称冲突),它会污染它并使事情变得更复杂。对于std
命名空间,特别是,通常更需要完全限定名称以避免此现象。
答案 1 :(得分:2)
操作员应该成为:
namespace jupiter {
struct B
{
operator mars::A()
{
return mars::A();
}
};
}