gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:41:33 24 4
gpt4 key购买 nike

我想创建一个类似于 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;

}

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

最佳答案

您是否考虑过使用多态性?

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

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

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 可以使用,例如:

class Base{
public:
virtual void print(){...}
};

关于c++ - 创建可以包含不同类的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27467335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com