命名空间可以用作 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 实例的情况下调用。
我知道在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 实例的情况下调用。