在不同命名空间中具有相同名称的类
Classes with same name in different namespace
本文关键字:命名空间 更新时间:2023-10-16
我正在写一个库。这是一个坏主意,有两个类具有相同的名称,但每个类都在不同的命名空间?
使用名称空间:
//forward declaration
namespace sparse {
class matrix;
}
namespace dense {
class matrix;
}
namespace dense {
typedef Index uint64_t;
class matrix {
public:
sparse::matrix tosparse();
};
}
namespace sparse {
typedef Index uint32_t;
class matrix {
dense::matrix todense();
};
}
或者,我可以使用长名称:
class sparse_matrix
...
一般来说,这很好。这正是名称空间的作用所在。在本例中,不清楚设计目标是什么,因此也不清楚这是否是名称空间的适当使用。
是的,这是个坏主意。
- 可以包含多个命名空间。所以这相当于写稀疏::矩阵vs密集::矩阵。 清晰为王。
- 它们为客户端提供类似/相同的实用程序。为什么使用不同的名称空间?
sparse_matrix
表示该对象的行为。如果你想让它们有一个共同的基础,做继承(抽象或非)。
相关文章:
- 命名空间中具有.h和.cpp文件的类
- 从父命名空间重载类型
- 在命名空间中定义函数还是限定函数
- C++:对不存在的命名空间使用命名空间指令
- 通过继承类使用来自不同命名空间的运算符
- 使用命名空间时出现多个定义错误
- CUDA内核和数学函数的显式命名空间
- 嵌套的匿名命名空间
- CMakeLists.txt中的命名空间表示法
- 类是C++中的命名空间吗
- 在命名空间中使用全局命名空间中的函数
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- '使用命名空间{嵌套在另一个命名空间中的某个命名空间}"
- 是否可以将函数导入命名空间,但不能导出它?
- C++ C++类中的命名空间降级
- 如何使用 soong 命名空间来有条件地编译模块
- 使用 Clang++ 有没有办法将文件作为命名空间等包含?
- 使用 make 编译 MPI,几个命名空间错误,例如"错误:未知类型名称'使用'?
- 如何通过命名空间调用非静态方法
- 在命名空间名称之前加上 :: 是什么意思?