正如其他人已经说过的那样,这是不可能的。但是您可以使用单例模式实现类似的效果,例如:
class MyClass
{
public:
enum MyEnum { A, B, C };
static MyClass* getAInstance()
{
static MyClass* a = new MyClass();
return a;
}
static MyClass* getBInstance()
{
static MyClass* b = new MyClass();
return b;
}
static MyClass* getCInstance()
{
static MyClass* c = new MyClass();
return c;
}
static MyClass* getInstance(MyEnum instance)
{
switch(instance)
{
case A:
return getAInstance();
case B:
return getBInstance();
case C:
return getCInstance();
}
}
};
所以(MyClass*) (MyEnum::A)
你会写而不是MyClass::getInstance(MyClass::A)
.