gpt4 book ai didi

c++ - 找出父类型 vector 元素的子类型

转载 作者:行者123 更新时间:2023-11-28 01:23:59 25 4
gpt4 key购买 nike

我有一个名为“Form”的抽象父类和一些子类,例如“圆”和“星”。如果我将这些子类的多个实例保存在父类型 vector 中,是否有任何方法可以找出单个元素的子类型?

//类

class Form {

public:
Form();
virtual ~Form() = default;
virtual void Draw(CDC* pDC)abstract;

};

class Circle :public Form {
public:
Circle();
~Circle();

void Draw(CDC* pDC) override;
CPoint GetUpperLeft();
CPoint GetLowerRight();


private:
CPoint m_upperLeft;
CPoint m_lowerRight;
};

//主要内容

int main(){
std::vector<Form> m_forms;
m_forms.pushback(Circle());
m_forms.at(0);//??

}

最佳答案

正如@john 刚刚建议的那样,您可以使用 typeid()

我的一些拼凑代码证明了原理是......

#include <iostream>
#include <typeinfo>

struct Base
{
virtual ~Base() {}
};

struct Derived : public Base
{
virtual ~Derived() {}
};

struct Circle : public Base
{
virtual ~Circle() {}
};


int main()
{
Derived d;
Circle c;
Base *b1 = &d;
Base *b2 = &c;

std::cout << typeid(*b1).name() << std::endl;
std::cout << typeid(*b2).name() << std::endl;


}

关于c++ - 找出父类型 vector 元素的子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54802844/

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