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

Can a namespace be used as an Object Template in C++?

我知道在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(...);

请注意,只有静态成员函数可以在没有 class 实例的情况下调用。