我该如何解决?我想执行适当的方法。有什么办法解决这个问题?
我想在一个循环中执行某种方法。
class Base
{
public:
void something() {}
};
class Child : public Base
{
public:
void something() {}
};
class SecondChild : public Base
{
public:
void something() {}
};
std::vector<Base*> vbase;
Child * tmp = new Child();
vbase.push_back((Base*) tmp);
SecondChild * tmp2 = new SecondChild();
vbase.push_back((Base*) tmp);
for (std::vector<Base*>::iterator it = vbase.begin(); it != vbase.end(); it++)
{
//here's problem, I want to execute proper method "something", but only I can do is execute Base::something;
(*it)->something();
}
当我有很多基础类的 child 时,我不知道该如何转换类型。
最佳答案
有几件事。
第一,您无需将内容转换为(Base*)
。隐式转换已经为您完成了。其次,如果将函数定义为virtual
,它将为您调用适当的函数。
关于c++ - C++继承,如何解决?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17682648/