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

时间:2015-01-15 12:59:55

标签: c++ namespaces

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

可以namespace用作Object Template吗?

要清楚;

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

你可以按照以下方式做某事

MyNamespace mynamespace;
mynamespace.MyClass.memberFunction();

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

相关问题