C++继承,怎么解决这个?

Unk*_*337 1 c++ inheritance

我怎么解决这个问题?我想执行适当的方法.有什么方法可以解决这个问题吗?我想在一个循环中执行方法.

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();
}
Run Code Online (Sandbox Code Playgroud)

当我有很多基类的孩子时,我不知道如何施放类型.

Rap*_*ptz 10

有几件事.

一,你不需要投东西(Base*).隐式转换将为您完成此操作.其次,如果您定义了函数,virtual它将为您调用适当的函数.