[英]C++: Equivalent to “using namespace <namespace>” but for classes?
假设您有一个其中定义了枚举的类:
class MyClass {
typedef enum _MyEnum{ a } MyEnum;
}
有没有一种方法可以从另一个类访问值a而不必将其称为MyClass :: a? 如果枚举包含在名称空间而不是类中,则不是“使用名称空间”; 解决了问题-是否有等效的方法可以对类进行处理?
我敢肯定,您会陷入“ MyClass :: a”的困境。 另外...这样做不会破坏将枚举放在类中的目的吗?
您能做的最好的事情就是将单个符号拖入类中。
class SomeClass {
typedef MyClass::MyEnum MyEnum;
MyEnum value;
};
请注意,如果typedef在类的公共部分中,则任何人都可以将SomeClass::MyEnum
为MyClass::MyEnum
的同义词。
一种替代方法是从Enum-holder类公开地派生:
struct Holder {
enum MyEnum { a };
};
class User : public Holder {
public:
// a now visible in class
MyEnum f() { return a; }
};
// a visible outside too
User::MyEnum f() { return User::a; }
除非另一个类是MyClass的派生类(并且您的枚举是受保护的/公共的),否。 我知道这不是一个答案,但是我认为该枚举是在MyClass内定义的,这是有原因的,因此请不要尝试使其全局可用。
您可以按如下方式分别提取每个常量:
class MyClass {
public:
// I added a value here intentionally to show you what to do with more than one enum value
typedef enum _MyEnum{ a, b } MyEnum;
}
using MyClass::a;
using MyClass::b;
//... likewise for other values of the enum
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.