我想创建一个像enum
这样的变量,女巫是指向A类,B类或空的指针。
它看起来像这样:
#include "A.h"
#include "B.h"
enum Foo{
A,
B,
Empty
};
int main(){
Foo bar = new A();
bar.print();
bar = Empty;
if ( bar == Empty )
// do stuff
return 0;
}
这样的事情有可能吗?我该怎么做?
答案 0 :(得分:2)
您是否考虑过使用多态?
我猜指针最适合这里。指向基类的指针可以指向其子类之一,也可以指向null / 0 - 几乎是你想要的。
如果您的A
和B
可以从公共基类继承:
class A : public Base{...};
class B : public Base{...};
您的代码可能如下所示:
int main(){
Base * bar = new A();
bar->print();
delete bar; //to release A
bar = 0;
if(bar == 0){
// do stuff
}
return 0;
}
另外,要像这样使用bar->print()
,请确保首先在Base
类中声明它(因此编译器知道分配给Base * bar
的任何类型都可以使用它,例如:< / p>
class Base{
public:
virtual void print(){...}
};