class foo
{
public:
    foo(void)
    {
        this->f = std::bind(&foo::doSomething, this);
    }

private:
    virtual void doSomething(void) { }

private:
    std::function<void(void)> f;
}

class bar : public foo
{
public:
    bar(void) { /* I have no idea what I have to */ }

private:
    virtual void doSomething(void) override { }
}

我想将覆盖的'doSomething'函数分配给'foo::f'。但我不知道如何分配重写的“doSomething”功能。还是我只写了一些代码来为每个类分配“doSomething”功能?
class foo
{
public:
    foo(void)
    {
        this->f = std::bind(&foo::doSomething, this);
    }

private:
    virtual void doSomething(void) { }

private:
    std::function<void(void)> f;
}

class bar : public foo
{
public:
    bar(void)
    {
        this->f = std::bind(&bar::doSomething, this);
    }

private:
    virtual void doSomething(void) override { }
}

该代码是我对问题的回答。但我想我可以将虚拟函数自动分配到std::function中。

最佳答案

this->f = std::bind(&foo::doSomething, this);

这样很好。通过指针或引用传递对象将允许它调用正确的虚函数。

10-01 19:47
查看更多