类型转换到另一个具有名称空间的类
Type conversion to another class with namespace?
通常,可以编写转换操作符来转换为另一个类,如
struct A {};
struct B
{
operator A()
{
return A();
}
};
现在,如果A
结构体有一个不同于B
的命名空间:
namespace mars {
struct A {};
}
namespace jupiter {
struct B
{
operator A() //??
{
return A();
}
};
}
operator A()
语句应该变成什么?
您可以简单地完全限定名称
namespace mars {
struct A {};
}
namespace jupiter {
struct B
{
operator mars::A()
{
return mars::A();
}
};
}
作为一个建议:尽量不要做像
这样的事情using namespace mars;
在全局作用域中:这会污染它,并在应用程序增长时使事情变得更加复杂(例如名称冲突)。特别是对于std
名称空间,通常更希望完全限定名称以避免这种现象。
操作符应该变成:
namespace jupiter {
struct B
{
operator mars::A()
{
return mars::A();
}
};
}
相关文章:
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 在C++中将内部类实现为具有名称空间的独立类有什么好处
- 如何在两个不同的命名空间(但只写一次)中使用相同的标头定义,命名空间有不同的实现?
- 这个嵌套的名称空间定义有什么作用
- 声明是否有可能逃脱其封闭的名称空间
- 是否有一种方法可以避免标头文件中使用的constexpr函数输入全局范围,而无需额外的名称空间
- 为什么 GCC 无法优化,除非返回值有名称?
- C++嵌套的"命名空间""使用"名称查找首选项顺序
- 使用 "::member" 引用全局命名空间有什么用吗?
- 非 OOP 版本的"财产"是否有名称?
- 为什么chrono有自己的名称空间
- C++:此模式是否有名称,是否可以改进
- 模板类继承命名空间的名称查找
- 未命名命名空间中名称的外部链接
- 一个命名空间有多个别名
- List Traversal w/temp指针-在声明指针时分配指针引用的节点空间有危险
- C++:类的名称与命名空间的名称相同
- 此方法是否已经有名称
- "using"命名空间和声明命名空间有什么区别?
- 哪些右值有名称