gpt4 book ai didi

c++ - 如何在C++中检查对象类型

转载 作者:搜寻专家 更新时间:2023-10-31 01:13:06 24 4
gpt4 key购买 nike

例如我们有一个 Animal 类,我们创建了一些其他类,如 Lion 类、Tiger 类等。我已经制作了一个 Animal 类的列表,我想遍历该列表并根据列表中每个成员的类的类型处理该列表。

Class Animal
Class Tiger :: public Animal{}
Class Lion :: public Animal{}
list<Animal> l;
Tiger T;
Lion L;
l.push_back(T); l.push_back(L);
if the top member of the list is Tiger print"ITs a tiger"
else print"something"

简单地说,我想检查创建的实例的类型。我不知道该怎么做。

最佳答案

这叫做 RTTI这不是好的编码习惯。

话虽如此,如果你绝对想知道一个类的类型,你可以这样做

if (typeid(myanimal) == typeid(Tiger)) {
// Do something tiger-like
}

在你的情况下,我建议的是对所有 Animal 有一个通用接口(interface)。 ,例如 sayHello()方法。你会有

class Animal {
void sayHello() = 0;
// Other things
}

Tiger这将是

Tiger::sayHello() {
cout << "Hello I'm a Tiger!" << endl;
}

然后,从您的 vector<Animal*> (你需要使用指针)调用

myAnimal->sayHello();

关于c++ - 如何在C++中检查对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12998182/

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