#include <iostream>
#include <string>
#include <map>
#include <vector>
class base {};
class derived1 : public base
{
public:
unsigned short n;
derived1()
{
n = 2;
}
};
class derived2 : public base {};
void main()
{
// way 1
{
std::vector<derived1> a1;
std::vector<derived2> a2;
std::map<std::string, base*> b;
a1.push_back(derived1());
b["abc"] = &a1.at(0);
std::cout<<(dynamic_cast<derived1*>(b.find("abc")->second))->n<<std::endl;
}
// way 2
{
std::map<std::string, base*> b;
b["abc"] = new derived1();
std::cout<<dynamic_cast<derived1*>(b.find("abc")->second)->n<<std::endl;
delete dynamic_cast<derived1*>(b.find("abc")->second);
}
}
오류는 ''dynamic_cast '입니다 :'base '는 다형성 유형이 아닙니다. " 이 문제를 해결하려면 어떻게해야합니까? 모든 것이 올바르게 way1과 way2에서 모두 정리 되었습니까?왜 다형 유형 오류 및 정리 질문?
'main' 리턴 타입은'void'가되어서는 안됩니다. – Mahesh