创建可以包含不同类的变量

时间:2014-12-14 07:42:12

标签: c++ class variables

我想创建一个像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;

}

这样的事情有可能吗?我该怎么做?

1 个答案:

答案 0 :(得分:2)

您是否考虑过使用多态?

我猜指针最适合这里。指向基类的指针可以指向其子类之一,也可以指向null / 0 - 几乎是你想要的。

如果您的AB可以从公共基类继承:

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(){...} 
};