gpt4 book ai didi

c++ - 知道函数内部参数中基指针派生类的类型吗?

转载 作者:行者123 更新时间:2023-11-30 05:18:06 24 4
gpt4 key购买 nike

我有一个类 Attribute

class Attribute {};

这是一些类的基类,比如

class Place : public Attribute {};
class Time : public Attribute {};
class Way: public Attribute {};

然后我有两个 initializer_lists

Place* place = new Place();
Time* time = new Time();
Way* way = new Way();
auto il1 = std::initializer_list<Attribute*>({ place, time });
auto il2 = std::initializer_list<Attribute*>({ place, way });

我的目标是了解初始化列表中属于第二个 initializer_list 元素类型的元素。

一种方法是做类似的事情

bool isFirstElementAPlace = (dynamic_cast<Place*>(*(l.begin())) ? true : false);

但是Place*应该换成typeid(*(il2.begin())),但是它返回的类型信息是Attribute*,而不是 Place* 左右。所以这个答案是无效的。


有没有办法在 initializer_list 的参数中一般地知道基类指针的派生类的类型?

解决于 THIS QUESTION

最佳答案

使用模板:

template <typename T> 
bool isType(Attribute* a) {
return dynamic_cast<T*>(a);
}

然后你可以这样检查类型:

bool isFirstElementAPlace = isType<Place>(*(l.begin()));

关于c++ - 知道函数内部参数中基指针派生类的类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41905540/

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