我该如何解决?我想执行适当的方法。有什么办法解决这个问题?
我想在一个循环中执行某种方法。

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/

10-13 08:47
查看更多