c++ - 命名空间可以用作 C++ 中的对象模板吗?

标签 c++ namespaces

我知道在c++中,struct可以作为对象模板,我知道class可以作为对象模板。

namespace 能否用作 Object Template

要清楚;

MyClass myclass;
myclass.memberFunction();
MyStruct mystruct;
mystruct.memberFunction();

你能做点什么吗:

MyNamespace mynamespace;
mynamespace.MyClass.memberFunction();

通过该语法或类似的语法。

最佳答案

根据定义,namespace 只是一个命名空间,它不是模板或任何东西的工厂,Java 中最接近的对应物是包,所以如果您正在考虑创建一个新的命名空间实例,它不可能而且没有意义,就像你不能在 Java 中创建包的实例一样。

但是如果你只是想给现有的命名空间一个别名,你可以这样做:

namespace MyNamespace {
    class MyClass {
    public:
        static void MyStaticFunction(...) {...}
    };
}

namespace mynamespace=MyNamespace;
mynamespace::MyClass::MyStaticFunction(...);

请注意,没有类实例只能调用静态成员函数。

关于c++ - 命名空间可以用作 C++ 中的对象模板吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27964053/

相关文章:

c++ - 以编程方式找出 openCL 设备支持的最大工作组大小

python - 将 __add__ 运算符添加到 Cython 包装器类?

c++ - C++ catch(std::exception&e)与catch(…)

PHP json_decode - 处理命名空间

c# - 访问另一个命名空间内的同名全局类

PHP 如何自动加载类文件中定义的全局命名空间别名

c++ - QStandardItemModel appendRow 在调用构造函数后不起作用

service - 如何编辑 Kubernetes ServiceAccount 的命名空间

c# - 缺少 System.ServiceModel

c# - 使用 DlImport、Entrypoint 从 C# 调用命名空间中的 C++ 函数